DCEF4 虚拟键盘未显示

DCEF4 virtual keyboard is not showing up

我正在使用 https://github.com/salvadordf/CEF4Delphi 的 CEF4Delphi 我正在编辑 PopupBrowser2 示例。有 Chromium1 组件。我添加了事件,应该在请求键盘时通知:

procedure TForm1.Chromium1VirtualKeyboardRequested(Sender: TObject; const browser: ICefBrowser;
  input_mode: TCefTextInpuMode);
begin
   caption := 'kbd';
end;

遗憾的是,当示例加载 google 页面时,我点击了搜索编辑框并且没有调用事件。我怎样才能让事件被调用?

TChromium.OnVirtualKeyboardRequested 是 ICefRenderHandler 的事件之一,该处理程序仅供处于离屏模式(OSR 模式)的浏览器使用。

PopupBrowser2 演示在正常模式下使用浏览器 (a.k.a。"windowed mode"),这意味着将触发 none 个 ICefRenderHandler 事件。

对于 PopupBrowser2,您将不得不使用一个名为 GlobalCEFApp.OnFocusedNodeChanged

的不同事件

检查 node.name 和 HTML 标签名称应该显示虚拟键盘,例如 GlobalCEFApp.OnFocusedNodeChanged 中的 "input" 或 "textarea"。

该事件在呈现进程中执行,您必须向主浏览器进程发送进程消息以显示键盘。

DOMVisitor 演示向您展示了如何在需要时使用一些参数发送该进程消息: https://github.com/salvadordf/CEF4Delphi/blob/132edb2e8895d998d3e3810982c95b9f845d78f8/demos/Delphi_VCL/DOMVisitor/uDOMVisitor.pas#L305

浏览器进程将在 TChromium.OnProcessMessageReceived 事件中收到该消息,您可以在此处看到: https://github.com/salvadordf/CEF4Delphi/blob/132edb2e8895d998d3e3810982c95b9f845d78f8/demos/Delphi_VCL/DOMVisitor/uDOMVisitor.pas#L432

请注意,TCefProcessMessageRef 是由 "New" 函数创建的,具有名称。当您在应用程序中实现 TChromium.OnProcessMessageReceived 时,您必须在处理之前比较 message.name 具有相同的名称值。