c# - 使用 Chromium Embedded 有没有办法从 Javascript 与程序通信?

标签 c# c++ delphi chromium-embedded

如果您的应用程序中有一个 chromium 嵌入式 Web 浏览器小部件,是否有办法通知应用程序在任何时间点发生了某些事情?例如,假设调整了一个项目的大小或单击了一个按钮,并且它是一个基于 javascript 的页面加载到 chromium 嵌入式小部件中。您如何通过代码通知 C++ 或 Delphi 应用程序(或任何应用程序)并向其发送消息或回调?我正在寻找类似 sendMessage 功能的东西,以便将发生的事情反馈给应用程序。

如何执行此操作的示例可以使用 C++、.Net 或 Delphi 或任何语言...因为我可以简单地将代码移植到我的 Delphi 语言。

换句话说,您如何从 javascript 与其中包含 chromium 嵌入式 Web 浏览器的应用程序进行通信?页面加载完成后,您可以通过发生的页面加载结束事件进行通信...但是,即使在页面加载后,javascript 代码也往往会运行,尤其是当用户使用鼠标在页面上拖动项目或单击时一个按钮..那么你如何随时与C++/Delphi应用程序沟通,发生了什么事?

仅供引用,可以完全访问 html/java 代码,即我可以在 javascript 中添加我自己的代码……任何我想要的代码。因此,如果有类似 sendMessageBackToApp 的内容,那么我想添加它。

如果此功能不可用,它肯定会有用。应用程序和 javascipt/html 之间的通信对于应用程序真正强大是必不可少的。

最佳答案

Chromium GuiClient 演示的以下添加对我适用于 D7:

procedure TMainForm.TestJS;
begin
  if crm.Browser <> nil then
    crm.Browser.MainFrame.ExecuteJavaScript(
      'alert(''JavaScript execute works!''); console.log(''From Javascript'')', 'about:blank', 0);
end;

procedure TMainForm.crmConsoleMessage(Sender: TObject; const browser:
    ICefBrowser; const message, source: ustring; line: Integer; out Result:
    Boolean);
begin
  ShowMessage('OnConsoleMessage: ' + Message);
  Result := True;
end;

请参阅此处以获得更全面的讨论:https://groups.google.com/forum/#!topic/delphichromiumembedded/uDxAUTvXqzc

关于c# - 使用 Chromium Embedded 有没有办法从 Javascript 与程序通信?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40068310/

相关文章:

c++ - 类设计以避免需要基类列表

c++ - cv 没有成员 CAP_PROP_POS_FRAMES

c++ - 我如何使用像素位置 'x' (Halide::Var) 值作为 for 循环的限制?

delphi - 是什么导致 "W1010 Method ' %s' 隐藏基类型 '%s' 的虚拟方法“警告?

c# - 使用 C# (.NET) 以编程方式更改 web.config

c# - 术语 'add-migration' 未被识别为 cmdlet 的名称

c# - MVC3 动态 ListView

c# - 为什么从 DNX 迁移到 .NET CLI 需要更改代码?

delphi - TToolBar 在非主题 Windows 上绘制不正确

android - 如何使用SELECT SQLite语句并将数据输出为字符串?