Хук CallWndProc не получает все сообщения - PullRequest
0 голосов
/ 13 октября 2011

Я создаю небольшой инструмент, такой как Displayfusion, и мне нужно несколько хуков для получения сообщений, когда Windows перемещается / активируется / и т.д., однако я застрял ..

Я использую этот проект для ловушки 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;
}

Ответы [ 2 ]

0 голосов
/ 25 сентября 2012

У меня похожая проблема в моем приложении. Посетите следующую ссылку:

Странное поведение оконных хуков

Я предполагаю, что приложение прерывает цепочку функций фильтра, не вызывая метод CallNextHookEx. Обратите внимание, что это возможно только при использовании WH_CBT хуков.

0 голосов
/ 13 декабря 2011

Хм, попробуйте, если Spy ++ может ловить сообщения.Если это возможно, то, очевидно, это не проблема с мерами безопасности.Однако Spy ++ не может, тогда это практически невозможно.

Посмотрите, работает ли это: используйте как перехватчики WH_CALLWNDPROC, так и WH_GETMESSAGE, поскольку, очевидно, первый перехватывает только отправленные сообщения, а второй только пересылаемые сообщения.

...