使用AddCode方法将一些代码(JScript)添加到ScriptControl的global模块中,然后使用如下两句话来得到代码中的过程记数。
IScriptProcedureCollectionPtr pIProcedures = m_pScript->GetProcedures();
long count = pIProcedures->GetCount();
当添加的代码中没有全局变量而只有函数的时候没有问题,JScript代码示例如下:
function calc(a, b){return a + b;}
而当添加的代码中包含全局变量的时候会在GetCount那一句抛出0x8002802c的异常,JScript代码示例如下:
var a = 10;
function calc(b){return a + b;}
如果是采用VBScript就可以将过程和变量混合定义在global模块中而不会影响取得过程基本信息。不知道微软为什么会搞成这样?
本文探讨了在ScriptControl的global模块中使用AddCode方法添加JScript代码时遇到的问题。当代码仅包含函数时正常工作,但引入全局变量后,在尝试获取过程计数时会触发异常。文章对比了JScript与VBScript的不同行为。

被折叠的 条评论
为什么被折叠?



