2011-10-13 54 views
0

我正在像Displayfusion一个小工具,我需要一些鱼钩来接收消息当Windows移动/启动/等等,但是我坚持..CallWndProc钩没有收到的所有消息

我使用这个项目在CallWndProc钩: http://www.codeproject.com/KB/system/WilsonSystemGlobalHooks.aspx

对于几乎所有的窗户它的伟大工程(x86和x64),但是在一些窗口似乎不能注入钩DLL。目前,我在使用adobe reader X时遇到了问题。没有收到该窗口的消息。我认为这与沙箱有关?有人可以推动我朝着正确的方向前进吗?

了钩的初始化代码:

bool InitializeCallWndProcHook(int threadID, HWND destination) 
{ 
    if (g_appInstance == NULL) 
    return false; 

    if (GetProp(GetDesktopWindow(), "WILSON_HOOK_HWND_CALLWNDPROC") != NULL) 
    SendNotifyMessage((HWND)GetProp(GetDesktopWindow(), "WILSON_HOOK_HWND_CALLWNDPROC"), RegisterWindowMessage("WILSON_HOOK_CALLWNDPROC_REPLACED"), 0, 0); 

    SetProp(GetDesktopWindow(), "WILSON_HOOK_HWND_CALLWNDPROC", destination); 
    hookCallWndProc = SetWindowsHookEx(WH_CALLWNDPROC, (HOOKPROC)CallWndProcHookCallback, g_appInstance, threadID); 

    return hookCallWndProc != NULL; 
} 
+0

Adob​​e是那种担心很多安全问题的公司。 Flash很明显,但Reader也不例外,因为它可以显示防止复制/粘贴的文档。您需要联系他们以获得支持。 –

回答

0

嗯,尝试,如果间谍++能赶上的消息。如果可以的话,显然这不是安全措施的问题。它Spy ++不能,然而它几乎是不可能的。

看看是否有效:同时使用WH_CALLWNDPROC和WH_GETMESSAGE钩子,因为显然前者只捕获已发送的消息,后者只捕获已发送的消息。

+0

我只是用Spy ++试过,而Spy ++能够从Adobe Reader X接收消息。我尽可能快地尝试WH_CALLWNDPROC和WH_GETMESSAGE钩子。 –

0

我在我的应用程序中有类似的问题。请访问以下链接:

Strange behaviour of windows hooks

我的猜测IST,应用程序通过不调用CallNextHookEx方法中断过滤函数链。请注意,这只有在您使用WH_CBT挂钩时才有可能。

+0

嗯,如果Outlook与我的CBT钩子一起工作,我会在今天晚些时候尝试。替代方案也可以是这个Shell挂钩:http://msdn.microsoft.com/en-us/library/windows/desktop/ms644989(v=vs.85).aspx。这个钩子也被Windows任务栏使用。 –