• <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 中調(diào)用 Jscript 函數(shù)

            在 CPP 中調(diào)用 Jscript 中的函數(shù)

            在 C++ 中調(diào)用 Jscript 的函數(shù)非常簡單, Windows 提供了一個 msscript.ocx 的控件,利用這個控件可以直接操作 Jscript: 執(zhí)行一段 Jscript 腳本,或者調(diào)用指定的函數(shù)。我寫了一個簡單的例子:

            l 導(dǎo)入 msscript.ocx 。下面這條指令會在項目目錄中生成 msscript.tli 和 msscript.tlh 兩個文件,里面有 msscript.ocx 中所有接口的描述和 IID 的定義。

            #import "msscript.ocx" no_namespace
            l 聲明一個對象。

            CComPtr < IScriptControl > m_iScriptControl;
            l 創(chuàng)建對象實例

            if ( SUCCEEDED ( m_iScriptControl . CoCreateInstance ( __uuidof ( ScriptControl ))))
            l 設(shè)置語言等屬性。

            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 獲得函數(shù),這里要說明的是 GetItem 的參數(shù)是 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 準(zhǔn)備函數(shù)參數(shù)。

            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 調(diào)用函數(shù)。

            _variant_t Result = m_iScriptControl -> Run ( strFunction , & psa );
            l 釋放參數(shù)。

            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 閱讀(1185) 評論(3)  編輯 收藏 引用

            評論

            # re: CPP 中調(diào)用 Jscript 函數(shù) 2007-11-28 09:00 <a href=http://minidx.com>minidxer</a>

            可惜只能在WIN下用  回復(fù)  更多評論   

            # re: CPP 中調(diào)用 Jscript 函數(shù) 2007-11-29 22:28 helixapp

            在linux下面也可以通過開進程調(diào)吧?  回復(fù)  更多評論   

            # re: CPP 中調(diào)用 Jscript 函數(shù) 2007-12-09 01:19 BOSS

            不錯
            很好  回復(fù)  更多評論   


            只有注冊用戶登錄后才能發(fā)表評論。
            網(wǎng)站導(dǎo)航: 博客園   IT新聞   BlogJava   博問   Chat2DB   管理


            <2008年1月>
            303112345
            6789101112
            13141516171819
            20212223242526
            272829303112
            3456789

            導(dǎo)航

            統(tǒng)計

            常用鏈接

            留言簿(4)

            隨筆檔案

            網(wǎng)站收藏

            搜索

            最新評論

            閱讀排行榜

            評論排行榜

            aaa级精品久久久国产片| 怡红院日本一道日本久久 | 区久久AAA片69亚洲| 久久精品国产亚洲AV蜜臀色欲| 久久久噜噜噜www成人网| 国产精品久久久久影院色| 久久午夜福利电影| 欧美喷潮久久久XXXXx| 国产精自产拍久久久久久蜜| 亚洲精品高清国产一线久久| 国产91久久综合| 熟妇人妻久久中文字幕| 日韩中文久久| 日本久久久精品中文字幕| 中文无码久久精品| 久久综合九色欧美综合狠狠 | 香蕉久久夜色精品升级完成| 99久久国产主播综合精品| 欧美一区二区三区久久综合| 久久人人爽人人精品视频| 久久综合丁香激情久久| 久久亚洲精精品中文字幕| 国产精品亚洲综合久久| 久久亚洲视频| 久久久久国产亚洲AV麻豆| 爱做久久久久久| 91久久精品国产91性色也| jizzjizz国产精品久久| 久久久久免费看成人影片| 国产色综合久久无码有码| 一本色综合久久| 97精品伊人久久大香线蕉| 久久精品国产精品亚洲| 久久久久黑人强伦姧人妻| 久久精品亚洲男人的天堂| 免费精品久久久久久中文字幕| 久久激情亚洲精品无码?V| 久久人人爽人人爽AV片| 无码人妻久久一区二区三区蜜桃| 久久无码AV中文出轨人妻| 午夜视频久久久久一区 |