1

我最近将我的一个项目迁移到WebView2,我不知道的最后一部分是如何拦截 webview 的 Windows 消息。我的代码与webview/webview非常相似,但我无法在他们的 GitHub 上找到帮助。

以前,我能够找到hWndwebview 并使用 SetWindowSubclass将我自己的添加wndproc到 webview 中。但是,我使用了Spy++并尝试SetWindowSubclass了所有显示在那里的窗口(见下文),但wndproc除了一些我认为无用的窗口管理消息之外,它们中没有任何窗口消息 - 我得到的最好的是WM_PARENTYNOTIFY,但我对WM_MOUSEMOVEWM_NCHITTEST-我都找不到。

我的目标是创建一个基于 WebView2 的无边界、可拖动、可调整大小的应用程序。

间谍++输出

4

1 回答 1

1

问题是,控制和获取所有这些输入的真实窗口位于另一个进程中。您只会看到一个窗口,其中显示了您的流程中的输出。

调查间谍++。以下所有内容都Chrome_WidgetWin_0属于一个新流程 ( MSEDGEWEBVIEW2),并且不属于您的流程。所以你不能用普通技术子类化这样的窗口。

所以如果你想子类这个窗口。您需要在这个新进程中注入一个新的 DLL。这个 DLL 可能是真实窗口的子类。这个 DLL 可能会通过任何 IPC 与您的托管程序进行通信。

于 2020-12-03T07:58:14.187 回答