2011-05-23 102 views
3

我正在开发一个接口Matlab和Google地球插件的项目。通过COM接口调用JavaScript方法

我的想法是使用COM接口,其中MATLAB作为COM-Client的COM-Client和Google Earth插件在Internet Explorer 9中作为COM-Sever。

但是直到现在,我仍然不知道如何从MATLAB调用JavaScript方法,以便我可以在Internet Explorer中更新Google地球的视图。

是否可以通过COM调用JavaScript方法?

我的第二个想法是建立一个基于InternetExplorer的自定义网页浏览器,然后嵌入自定义的COM方法和属性,使之能与从外部应用程序调用与谷歌地球运行。

任何帮助将高度赞赏。

问候, 万

回答

3

貌似只支持谷歌地球API是JavaScript API。因此,您为此嵌入Internet Explorer的方法听起来很合理。

我对MATLAB的结尾并不是很熟悉,但是假设你可以嵌入web浏览器控件,你就可以开始调用脚本了。

在最底层,IE浏览器实现了IWebBrowser2接口。该接口公开一个Document属性,它返回一个IHTMLDocument2接口。调用IHTMLDocument2 :: parentWindow来获取一个IHTMLWindow2接口。

一旦你有IHTMLWindow2,据我看来,你有几个选项。你的脚本可以调用IHTMLWindow2 :: execScript。或者,您的顶级JavaScript函数应该通过继承的IDispatch在IHTMLWindow2接口上作为方法提供:如果您需要返回值,则该函数特别有用。

使用EXECSCRIPT一些Delphi代码:http://www.delphidabbler.com/articles?article=21直接使用IDispatch接口

一些.NET框架的代码(见注释的更复杂的代码示例):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”)

+0

感谢您的回复。我确实检查了com对象的可用方法,但以某种方式监视了execScript方法。非常感谢! – Wan 2011-05-23 23:06:32