构建带有嵌入式浏览器的Windows应用程序&;JavaScript';挂钩';

构建带有嵌入式浏览器的Windows应用程序&;JavaScript';挂钩';,javascript,c++,windows,internet-explorer,webkit,Javascript,C++,Windows,Internet Explorer,Webkit,我为一位客户建立了一个PHP/JavaScript网站。然后他们让我复制它,除了作为一个独立的Mac应用程序。我用一个结合了嵌入式web服务器、PHP和“WebView”的应用程序做到了这一点。WebView是一个可可色版本的WebKit web浏览器,我可以将其嵌入到标准的应用程序窗口中。这一切都做得很好——我重用了10000多行PHP/JS代码,这节省了几个月的时间,可以用“本机”代码重新实现它 现在,他们想要一个与Windows相同的版本。我有足够的信心让PHP和web服务器正常工作。我知

我为一位客户建立了一个PHP/JavaScript网站。然后他们让我复制它,除了作为一个独立的Mac应用程序。我用一个结合了嵌入式web服务器、PHP和“WebView”的应用程序做到了这一点。WebView是一个可可色版本的WebKit web浏览器,我可以将其嵌入到标准的应用程序窗口中。这一切都做得很好——我重用了10000多行PHP/JS代码,这节省了几个月的时间,可以用“本机”代码重新实现它

现在,他们想要一个与Windows相同的版本。我有足够的信心让PHP和web服务器正常工作。我知道嵌入基本的IE功能非常容易

然而…在我的Mac设置中,WebView(通过Windows脚本注入的东西)使我有能力从C++调用JavaScript方法。例如,我可以调用C++的JavaScript方法来更新屏幕。同样,我也可以设置一些东西,这样浏览器中的JavaScript调用就可以触发C++方法——例如,我使用这个方法让用户点击“浏览”,并使用一个真实的标准文件浏览器来选择文件路径。 所以我的问题是,是否有一个基于Windows的嵌入式浏览器设置可以让我以同样的方式与JavaScript交互


(这里对JavaScript WebKit界面进行了更详细的描述:)

也许可以尝试使用Appcelerator Tianium之类的工具,这样当客户要求它在Linux、iPhone或Android上工作时,你就可以准备好了

引用:“Appcelerator钛是一个平台 用于开发移动和桌面 使用web技术的应用程序。 […]支持基于标准的web应用程序 技术:HTML、CSS和Javascript 在与PHP一起的所有平台上, 桌面平台的Python和Ruby。 对流行音乐的综合支持 JavaScript和AJAX框架 包括jQuery、YUI、MooTools、, Scriptaculous等人。”


听起来像是完成这项工作的完美工具。

当您嵌入Web浏览器控件(IE)时,您的应用程序代码只需调用execScript即可(http://msdn.microsoft.com/en-us/library/ms536420(v=vs.85).aspx)在窗口对象上。您可以使用脚本中的WOWDO.SUBEL对象,并使用来自应用程序的对象脚本(或C++等效),将脚本调用到应用程序。

也许QT对您的情况会有好处,此外,您还可以使用

注入javascript。我在web上找到了一个从C在嵌入式浏览器中调用JS的好例子。基本上,使用COM ish方法可以从脚本对象获取DISPID,然后使用Invoke()方法。这很有效

<>但是我需要从我的JS代码中调用C++函数。看起来这是可能的,经过几个小时的胡闹之后,我想我几乎做到了——就像上面的相反——你创建一个COM对象,然后把它挂到浏览器的脚本对象上——但最终我无法完成交易——我一直收到“library not registered”错误。老实说,我对COM还不太了解,不足以做好这件事


然后,我,真见鬼,尝试构建我的第一个C#应用程序。在大约20分钟的时间里,我有了一个运行在浏览器上的应用程序,我可以在其中调用JS,也可以让浏览器调用C#方法。怪人。在经历了这段经历之后,我对.NET很有信心,也不相信90年代的Microsoft技术。

为了完整起见,我想提及我的WebKit的Windows端口,其中包括Mac上WebKit的各种跨层功能

我发布了一些演示如何在原生WinAPI应用程序中嵌入WebKit的文章,包括JavaScript->C++和C++->JavaScript示例

该示例是一个非常大的应用程序的小测试用例,该应用程序使用嵌入式WebView作为主要UI组件。我可以确认,您所做的不仅是可能的,而且是构建应用程序的一种好方法