Вызов метода JavaScript через интерфейс COM - PullRequest
3 голосов
/ 23 мая 2011

Я работаю над проектом по интерфейсу Matlab и Google Earth Plugin.

Моя идея состоит в том, чтобы использовать интерфейс COM, в котором MATLAB в качестве COM-клиента и Google Earth Plugin в Internet Explorer 9 в качестве COM-Север.

Но до сих пор у меня все еще нет идеи, как я могу вызвать метод JavaScript из MATLAB, чтобы я мог обновить представление Google Планета Земля в Internet Explorer.

Это так?Можно ли вызвать метод JavaScript через COM?

Моя вторая идея заключается в создании пользовательского веб-браузера на основе InternetExplorer, а затем встраивания пользовательских методов и свойств COM, чтобы он мог работать с Google Earth в отношении вызова из внешнего приложения..

Любая помощь будет принята с благодарностью.

С уважением, Ван

1 Ответ

3 голосов
/ 23 мая 2011

Похоже, единственным поддерживаемым API Google Планета Земля является API JavaScript.Так что ваш подход к встраиванию Internet Explorer для этого звучит разумно.

Я не очень знаком с конечной целью MATLAB, но, предполагая, что вы можете встроить элемент управления веб-обозревателя, вы сможете запускать сценарии.

На самом низком уровне веб-браузер IE реализует интерфейс IWebBrowser2.Этот интерфейс предоставляет свойство Document, которое возвращает интерфейс IHTMLDocument2.Вызовите IHTMLDocument2 :: parentWindow, чтобы получить интерфейс IHTMLWindow2.

Как только вы получите IHTMLWindow2, предположительно из моего чтения у вас есть несколько вариантов.Ваш скрипт может вызвать IHTMLWindow2 :: execScript.В качестве альтернативы ваши функции JavaScript верхнего уровня должны стать доступными в качестве методов интерфейса IHTMLWindow2 через унаследованный IDispatch: особенно полезно, если вам нужно возвращаемое значение.

Некоторый код Delphi, использующий execScript: http://www.delphidabbler.com/articles?article=21

Некоторый код .NET Framework, который напрямую использует IDispatch (см. Более сложный код с закомментированным примером): 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")

...