#import "msscript.ocx" no_namespace
l 声明一个对象。 CComPtr < IScriptControl > m_iScriptControl;
l 创建对象实例 if ( SUCCEEDED ( m_iScriptControl . CoCreateInstance ( __uuidof ( ScriptControl ))))
l 设置语言等属性。 m_iScriptControl -> PutLanguage (L "JScript" );
m_iScriptControl -> PutAllowUI ( VARIANT_FALSE );
l 加入 Jscript 代码。 m_iScriptControl -> AddCode (L "function test(str1, str2) { return str1 + /"-ok-/" + str2; }" );
l 获得函数,这里要说明的是 GetItem 的参数是 1 到 n ,而不是 0 到 n-1 。 CComPtr < IScriptPRocedureCollection > aProcedureSet = m_iScriptControl -> GetProcedures ();
long n = aProcedureSet -> GetCount ();
CComPtr < IScriptProcedure > aProcedure = aProcedureSet -> GetItem ( _variant_t ( n ));
_bstr_t strFunction = aProcedure -> GetName ();
l 预备函数参数。 VARIANT va = {0};
va . vt = VT_BSTR ;
n = 2;
SAFEARRAYBOUND bounds [1] = {0};
bounds [0]. cElements = n ;
SAFEARRAY * psa = SafeArrayCreate ( VT_VARIANT , 1, bounds );
long i = 0;
for ( i = 0; i < n ; i ++)
{
va . bstrVal = SysAllocString (L "test" );
SafeArrayPutElement ( psa , & i , & va );
}
l 调用函数。 _variant_t Result = m_iScriptControl -> Run ( strFunction , & psa );
l 释放参数。 for ( i = 0; i < n ; i ++)
{
va . bstrVal = SysAllocString (L "test" );
SafeArrayGetElement ( psa , & i , & va );
SysFreeString ( va . bstrVal );
}
SafeArrayDestroy ( psa );
原文地址:http://dev.csdn.net/author/absurd/7c6ea0f7f67044eeba924a98278a477a.Html
新闻热点
疑难解答