通过COM接口调用JavaScript方法

时间:2011-05-23 16:23:39

标签: javascript com activex google-earth google-earth-plugin

我正在开发一个与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一起使用,以便从外部应用程序调用。

任何帮助都将受到高度赞赏。

此致 万

1 个答案:

答案 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”)