C++ 全局挂接到Cwnd::使用MHook创建

C++ 全局挂接到Cwnd::使用MHook创建,c++,mfc,hook,C++,Mfc,Hook,我一直试图钩住CWnd::Create方法。我尝试使用SetWindowsHookExAPI进行挂钩。但这并非始终如一。因此,我关注了下面的博客,并尝试连接CreateWindowExAPI 在这里,我不确定是否会从Cwnd::Create API调用CreateWindowEx 我们可以使用MHOOK钩住Cwnd::Create过程吗?如果是这样,那么连接CreatWindowEx是监听Cwnd::Create调用的正确api?请浏览此链接 并非所有键盘和鼠标挂钩都是编组的,只有全局挂钩。钩子

我一直试图钩住CWnd::Create方法。我尝试使用SetWindowsHookExAPI进行挂钩。但这并非始终如一。因此,我关注了下面的博客,并尝试连接CreateWindowExAPI

在这里,我不确定是否会从Cwnd::Create API调用CreateWindowEx


我们可以使用MHOOK钩住Cwnd::Create过程吗?如果是这样,那么连接CreatWindowEx是监听Cwnd::Create调用的正确api?

请浏览此链接


并非所有键盘和鼠标挂钩都是编组的,只有全局挂钩。钩子的封送由线程消息队列执行。所以,安装钩子的线程必须调用消息泵送方法。

您是在该调用之后,还是正在创建一个窗口。对于后者,您可以使用
SetWinEventHook
。我对正在创建的窗口感兴趣。但是SetWinEventHookEx并没有始终如一地工作。在谷歌上搜索后,他们中的许多人说SetWindowHookEx并没有始终如一地工作。所以,我尝试使用MHook库,它看起来非常简单。我不确定CWnd::Create是否会调用CreateWindowEx。
CWnd::Create
(和
CWnd::CreateEx
)最终会调用Windows API
CreateWindowEx
。根据您的预处理器设置,这将扩展到
CreateWindowExA
CreateWindowExW
。MFC本身在调用
CreateWindowEx
之前设置了一个
WH_CBT
钩子,并在调用返回时将其删除。如果您钩住
CreateWindowEx
并且此调用是MFC创建窗口的结果,请确保遵守规则,没有人会受伤。我是否必须将CreateWindowExA和CreateWindoeExW的处理程序而不是CreateWindowEx?另外,我在MFC应用程序CWnd::Create(_T(“TestClassName”),_T(“hello”)中调用了CWnd::Create过程,WS|u CHILD | WS|u VISIBLE,correct(0,0,20,20),this,1234);当我挂接到CreateWindowEx时,如果我的挂接代码用于创建MFC应用程序窗口,CreateWindowEx的classname参数是否将具有值“TestClassName”?