【问题标题】:Get output from JavaScript function in C++从 C++ 中的 JavaScript 函数获取输出
【发布时间】:2013-06-05 16:25:25
【问题描述】:

喂,

我正在从事一个项目,该项目必须从 C++ 调用一个用 JavaScript 制作的自定义函数。我可以运行函数

该项目应该只能在Windows上运行(实际上它是一个Windows服务),所以使用接口IWebBrowser2和IHtmlDocument2就可以了

函数的签名是string function(string)。我可以在 C++ 中运行该函数,基于 this tutorial(我正在使用 IWebBrowser2 和 IHtmlDocument2 接口),但我无法从 C++ 中获取该 JS 函数的输出。

是否有任何方法可以使用这些接口从 C++ 中检索该 JS 函数的输出? (或者其他)

谢谢,

【问题讨论】:

  • 当你通过Invoke调用函数时,返回值放在VARAINT中。这是 Invoke 的第 6 个参数。
  • 您只需要调用定义为文本的javascript函数,还是网页上下文中的javascript函数?
  • @SimonMourier 我只需要调用一个定义为文本的 javascript 函数。
  • 您可以在 Windows 中重用脚本引擎,请查看:codeproject.com/Articles/349554/… 和此处 stackoverflow.com/questions/4744105/…(在 C# 中,但您可以将其翻译回 C++)

标签: javascript c++ com iwebbrowser2


【解决方案1】:

如果有人有同样的问题,我会回答我自己的问题:

简短的回答是您无法使用这些接口获取 javascript 脚本的输出。 IWebBrowser2 和 IHtmlDocument 是在基于 IE 的上下文中运行的,因此无法获取运行脚本的输出。

这个问题的解决方法是:

如果您打算在应用程序中使用 V8,调用函数的基本示例在 Calling a v8 javascript function from c++ with an argument 提供(但请注意 Dispose() 函数放置错误)

如果您打算使用活动脚本接口,Run JavaScript function from C++ without MFC 提供了基本示例。这是一个有用的示例,展示了如何运行 JavaScript 函数。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-09-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-08-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多