我正在开发一个与Matlab和Google Earth Plugin接口的项目。
我的想法是使用COM接口,其中MATLAB作为COM-Client和Internet Explorer 9中的Google Earth Plugin作为COM-Sever。
但直到现在,我仍然不知道如何从MATLAB调用JavaScript方法,以便我可以在Internet Explorer中更新Google Earth的视图。
是否可以通过COM调用JavaScript方法?
我的第二个想法是构建一个基于InternetExplorer的自定义Web浏览器,然后嵌入自定义COM方法和属性,以便它可以与Google Earth一起使用,以便从外部应用程序调用。
任何帮助都将受到高度赞赏。
此致 万
答案 0 :(得分:3)
看起来唯一受支持的Google Earth API是JavaScript API。因此,为此嵌入Internet Explorer的方法听起来很合理。
我对MATLAB的结束并不熟悉,但假设您可以嵌入Web浏览器控件,那么您应该可以开始调用脚本了。
在最低级别,IE Web浏览器实现IWebBrowser2接口。此接口公开Document属性,该属性返回IHTMLDocument2接口。调用IHTMLDocument2 :: parentWindow来获取IHTMLWindow2接口。
一旦你有了IHTMLWindow2,据说从我的阅读中你有两个选择。您的脚本可以调用IHTMLWindow2 :: execScript。或者,您的顶级JavaScript函数应该通过继承的IDispatch作为IHTMLWindow2接口上的方法提供:如果您需要返回值,这将非常有用。
一些使用execScript的Delphi代码:http://www.delphidabbler.com/articles?article=21
直接使用IDispatch的一些.NET Framework代码(请参阅已注释掉的更复杂的代码示例):http://www.west-wind.com/weblog/posts/2008/Sep/27/Calling-JavaScript-functions-in-the-Web-Browser-Control
长话短说,基本上你需要这样做:
myWebBrowser.Document.parentWindow.MyJavaScriptFunction()
或者这个:
myWebBrowser.Document.parentWindow.execScript(“MyJavaScriptFunction();”,“JavaScript”)