拦截来自 Webview2 (Edge/Chromium) 的 Windows 消息
Intercepting Windows Messages from Webview2 (Edge/Chromium)
我最近将我的一个项目迁移到了 WebView2 and the last part I can't figure out is how to intercept the Windows Messages for the webview. My code is very similar to webview/webview,但我无法在他们的 GitHub 上找到帮助。
以前,我能够找到 webview 的 hWnd
并使用 SetWindowSubclass
to add my own wndproc
to the webview. However, I've used Spy++ 并尝试 SetWindowSubclass
出现在那里的所有 windows (见下文) ) 但他们中的 none 在我的 wndproc
中有任何 windows 消息,除了一些 window 我认为没有用的管理消息 - 我得到的最好的消息是 WM_PARENTYNOTIFY
,但我对 WM_MOUSEMOVE
和 WM_NCHITTEST
感兴趣 - 我都找不到。
我的目标是创建一个无边框、可拖动、可调整大小的基于 WebView2 的应用程序。
问题是,控制和获取所有这些输入的真正 window 在另一个进程中。您只会看到一个 window,它显示了您的过程中的输出。
研究 Spy++。 Chrome_WidgetWin_0
以下的所有内容都属于新流程 (MSEDGEWEBVIEW2
),不属于您的流程。所以你不能用正常的技术子类化这样的 window。
所以如果你想继承这个window。您需要将新的 DLL 注入到这个新进程中。此 DLL 可能会子类化真正的 window。并且此 DLL 可能会通过任何 IPC 与您的托管程序进行通信。
我最近将我的一个项目迁移到了 WebView2 and the last part I can't figure out is how to intercept the Windows Messages for the webview. My code is very similar to webview/webview,但我无法在他们的 GitHub 上找到帮助。
以前,我能够找到 webview 的 hWnd
并使用 SetWindowSubclass
to add my own wndproc
to the webview. However, I've used Spy++ 并尝试 SetWindowSubclass
出现在那里的所有 windows (见下文) ) 但他们中的 none 在我的 wndproc
中有任何 windows 消息,除了一些 window 我认为没有用的管理消息 - 我得到的最好的消息是 WM_PARENTYNOTIFY
,但我对 WM_MOUSEMOVE
和 WM_NCHITTEST
感兴趣 - 我都找不到。
我的目标是创建一个无边框、可拖动、可调整大小的基于 WebView2 的应用程序。
问题是,控制和获取所有这些输入的真正 window 在另一个进程中。您只会看到一个 window,它显示了您的过程中的输出。
研究 Spy++。 Chrome_WidgetWin_0
以下的所有内容都属于新流程 (MSEDGEWEBVIEW2
),不属于您的流程。所以你不能用正常的技术子类化这样的 window。
所以如果你想继承这个window。您需要将新的 DLL 注入到这个新进程中。此 DLL 可能会子类化真正的 window。并且此 DLL 可能会通过任何 IPC 与您的托管程序进行通信。