我需要的很简单:我们有一个控制台应用程序项目。我们希望有这样一个函数,它可以打开一个只有 html(基于默认系统)的简单窗口 html + js 渲染窗口,该窗口将读取一些默认的 html+js 字符串(表单字符串或 const char*)。我们希望将我们自己的 api 与默认的 js api 结合起来,这样当 JS 调用某些函数时our.function(argument);
,我们的 C++ 应用程序就会执行一些函数,例如 cout 参数。如何在 Windows 上创建这样的东西?
3 回答
为 HTML 文档共同创建 MSHTML com 对象:
CComPtr spDoc; HRESULT hr = CoCreateInstance(CLSID_HTMLDocument, NULL, CLSCTX_INPROC_SERVER, IID_IHTMLDocument2, (void**)&spDoc);
做这样的事情来读取您的 HTML 字符串并让文档呈现它。
根据您在回调方面的需要,您可以使用COM DOM 接口遍历树,然后接收适当的DispInterfaces以获取您感兴趣的元素上的事件。我会推荐这个。
如果我在#3 中的建议对您来说不够好(我想听听为什么),那么您可以实现自己的 ActiveX 控件,并按照 raj 的建议在页面调用方法上设置脚本。
撇开任何安全/跨浏览器/平台问题,您可以在 C++ 中使用可以从 javascript 调用的 ActiveX 对象。
http://msdn.microsoft.com/en-us/library/7sw4ddf8(v=vs.94).aspx
控件的宿主WebBrowser
可以提供一个对象,脚本可以通过该对象访问该external
对象。
请参阅http://msdn.microsoft.com/en-us/library/aa770041.aspx#GetExternal