C++ 在Internet Explorer_服务器(IWebBrowser2)上截获WM_命令(从加速器发送)

C++ 在Internet Explorer_服务器(IWebBrowser2)上截获WM_命令(从加速器发送),c++,internet-explorer,mfc,atl,C++,Internet Explorer,Mfc,Atl,我需要截获发送到我的CHtmlView对象的粘贴消息。根据Spy++,它是作为WM_命令消息发送的,但根据Spy++,消息不是发送到CHtmlView对象,而是发送到它包装的Internet Explorer_服务器(或IWebBrowser2)对象。所讨论的WM_命令消息在任何其他父对象中都看不到(我通过观察和Spy++发现了这一点) 我如何截获这条(或者说,一条全选)消息?我已经观看了AfxCallWndProc以查找正确的WM_命令消息,但它没有显示在那里。要截获消息(例如:WM_命令),

我需要截获发送到我的CHtmlView对象的粘贴消息。根据Spy++,它是作为WM_命令消息发送的,但根据Spy++,消息不是发送到CHtmlView对象,而是发送到它包装的Internet Explorer_服务器(或IWebBrowser2)对象。所讨论的WM_命令消息在任何其他父对象中都看不到(我通过观察和Spy++发现了这一点)

我如何截获这条(或者说,一条全选)消息?我已经观看了AfxCallWndProc以查找正确的WM_命令消息,但它没有显示在那里。

要截获消息(例如:WM_命令),您需要调用以下命令对窗口(在您的情况下是Internet Explorer_服务器)进行子类化:

BOOL SetWindowSubclass(
  _In_  HWND hWnd,
  _In_  SUBCLASSPROC pfnSubclass,
  _In_  UINT_PTR uIdSubclass,
  _In_  DWORD_PTR dwRefData
);


在这之后,您自己的windows过程首先进行控制,您可以决定如何处理该消息。

我最终选择了
SetWindowLongPtr()
,但这让我走上了正确的道路。谢谢。我用了几十年了。它运行良好。
setWindowsSubClass
有什么问题?它也在做同样的事情。