• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>

            CPP 中調用 Jscript 函數

            在 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 );

            posted on 2007-11-27 23:21 lovetiffany 閱讀(1195) 評論(3)  編輯 收藏 引用

            評論

            # re: CPP 中調用 Jscript 函數 2007-11-28 09:00 <a href=http://minidx.com>minidxer</a>

            可惜只能在WIN下用  回復  更多評論   

            # re: CPP 中調用 Jscript 函數 2007-11-29 22:28 helixapp

            在linux下面也可以通過開進程調吧?  回復  更多評論   

            # re: CPP 中調用 Jscript 函數 2007-12-09 01:19 BOSS

            不錯
            很好  回復  更多評論   

            <2007年11月>
            28293031123
            45678910
            11121314151617
            18192021222324
            2526272829301
            2345678

            導航

            統計

            常用鏈接

            留言簿(4)

            隨筆檔案

            網站收藏

            搜索

            最新評論

            閱讀排行榜

            評論排行榜

            久久亚洲国产午夜精品理论片| 噜噜噜色噜噜噜久久| 国内精品人妻无码久久久影院导航 | 亚洲va久久久噜噜噜久久天堂| 久久精品国产亚洲AV久| 久久er99热精品一区二区| 久久最新精品国产| 久久无码AV一区二区三区| 国产人久久人人人人爽| 亚洲一级Av无码毛片久久精品| 久久99精品国产麻豆宅宅| 亚洲精品高清一二区久久| 99久久超碰中文字幕伊人| 亚洲AⅤ优女AV综合久久久| 996久久国产精品线观看| 久久亚洲精品成人无码网站| 久久精品国产半推半就| 麻豆一区二区99久久久久| 一本久久综合亚洲鲁鲁五月天| 国产精品久久久久久影院| 国产成人精品三上悠亚久久| 久久久久女教师免费一区| 九九99精品久久久久久| 国产成年无码久久久久毛片| 久久久SS麻豆欧美国产日韩| 久久久精品久久久久久| 亚洲综合精品香蕉久久网97 | 99久久777色| 亚洲av伊人久久综合密臀性色 | 精品无码久久久久久久动漫| 99久久超碰中文字幕伊人| 欧美噜噜久久久XXX| 伊人久久大香线蕉综合Av| 精品国产99久久久久久麻豆| 亚洲国产日韩综合久久精品| 久久综合偷偷噜噜噜色| 伊人精品久久久久7777| 99久久香蕉国产线看观香| 欧美日韩精品久久免费| 久久综合亚洲色HEZYO社区| 中文精品99久久国产|