国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

在CPP中調用Jscript中的函數

2019-11-17 05:26:07
字體:
來源:轉載
供稿:網友
在 CPP 中調用 Jscript 中的函數 在 C++ 中調用 Jscript 的函數非常簡單, Windows 提供了一個 msscript.ocx 的控件,利用這個控件可以直接操作 Jscript: 執行一段 Jscript 腳本,或者調用指定的函數。我寫了一個簡單的例子: l 導入 msscript.ocx 。下面這條指令會在項目目錄中生成 msscript.tli 和 msscript.tlh 兩個文件,里面有 msscript.ocx 中所有接口的描述和 IID 的定義。 #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

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 古浪县| 海安县| 岳普湖县| 进贤县| 沙洋县| 无锡市| 巴青县| 涿州市| 舞阳县| 福州市| 万全县| 高安市| 新泰市| 武山县| 北川| 什邡市| 奈曼旗| 集安市| 新郑市| 富锦市| 霍城县| 宁安市| 祁阳县| 阳东县| 钟山县| 嘉义市| 台中县| 海原县| 宕昌县| 福贡县| 汝州市| 裕民县| 禹州市| 霸州市| 建瓯市| 安仁县| 安仁县| 沂水县| 苏尼特右旗| 砀山县| 广安市|