我有一个继承自CWnd的类X,我想从应用程序域外部挂钩到X Create,即程序A必须监视程序B中的X对象实例化。有没有办法做到这一点?
答案 0 :(得分:1)
您无法监控X对象的创建(X ctor X::X()
)。
您也无法监控对X::Create
的通话。
但可能有适合您的解决方案:
由于X::Create
调用CWnd::Create
并且这会创建一个窗口,您可以连接到窗口创建,并且可能能够检测何时创建X窗口。但是,如果创建的窗口有一些特殊的东西,就像用于创建它们的已知窗口类一样,您将只能识别这一点。如果是这种情况,那么:
您在上一个问题Hooking window creation in an MFC program中已经得到了正确答案。
您可以使用SetWindowsHookEx(WH_CBT,lpfn,hMod,dwThreadId)在创建窗口时收到通知。
要记住的一些事情:
SetWindowsHookEx
的进程中。这是因为Windows会将DLL加载/注入它监视窗口创建的每个进程。CallNextHookEx
。HCBT_CREATEWND
以及您感兴趣的窗口类(或其他)。