3

我正在开发一个连接 Matlab 和 Google 地球插件的项目。

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

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

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

我的第二个想法是构建一个基于 InternetExplorer 的自定义 webbrowser,然后嵌入自定义 COM 方法和属性,以便它可以与 Google Earth 一起从外部应用程序调用。

任何帮助将不胜感激。

问候,万

4

1 回答 1

3

看起来唯一受支持的 Google 地球 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")

于 2011-05-23T16:46:48.850 回答