#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新聞熱點
疑難解答