从C++调用JavaScript函数

And*_*rew 6 javascript c++ mfc

我有一个CDHTMLDialog,我有2个HTML页面和一个.js文件,有一些相当简单的功能.

我希望能够从我的程序中调用一个JS函数,并使用它传递一个简单的数据类型.例如MyFunc(int).什么都不需要退货.

我很感激任何有关我如何做到这一点的指导,

谢谢.

编辑:感谢CR的答案,以及其他提交了这些想法的人.

有点像这样的东西最终起作用(为了清晰起见剥离了一点错误处理):

void callJavaScriptFunc(int Fruit)
{
    HRESULT hRes;
    CString FuncStr;
    CString LangStr = "javascript";
    VARIANT vEmpty = {0};

    CComPtr<IHTMLDocument2> HTML2Doc;
    CComPtr<IHTMLWindow2> HTML2Wind;

    hRes = GetDHtmlDocument(&HTML2Doc);
    hRes = HTML2Doc->get_parentWindow(&HTML2Wind);

    if( Fruit > 0 ) 
    {
        FuncStr = "myFunc(808)";  // Javascript parameters can be used
        hRes = HTML2Wind->execScript(FuncStr.AllocSysString(), LangStr.AllocSysString(), &vEmpty);
    }
}
Run Code Online (Sandbox Code Playgroud)

CR.*_*CR. 3

最简单的方法是使用IHTMLWindow2接口中的execScript()方法。

因此,您可以通过调用GetDHtmlDocumentCDHTMLDialog获取IHTMLDocument2接口,然后从IHTMLDocument2获取parentWindow。父窗口将具有支持execScript()的IHTMLWindow2接口。

可能有一种更简单的方法可以从 CDHTMLDialog 获取 IHTMLWindow2 界面,但我习惯在较低级别工作。