winapi — c ++ глобальная перехват. Почему SetWindowsHookEx возвращает NULL?

У меня большая проблема с SetWindowsHookEx и WH_CALLWNDPROC! Когда использовать SetWindowsHookEx для локального перехвата

HHOOK hook = SetWindowsHookEx(WH_CALLWNDPROC, CallWndProc, GetModuleHandle(NULL), GetCurrentThreadId());

все работает нормально, но когда я пытаюсь установить глобальный хук или хук для другой программы:

HHOOK hook = SetWindowsHookEx(WH_CALLWNDPROC, CallWndProc, GetModuleHandle(NULL), threadId);

где threadId = GetWindowThreadProcessId(window, NULL);
а также HWND window = ::FindWindow(NULL,"Program title");

я получаю NULL в крюке …

Я читаю очень много для ловли, но я не понимаю, где работа …
У меня болит голова несколько дней.
Заранее спасибо и извините за мой английский.

2

Решение

Один из способов сделать это:

  1. Поместите вашу функцию CallWndProc в DLL
  2. Экспортируйте эту функцию, используя файл def со следующим содержимым:

БИБЛИОТЕКА

EXPORTS

CallWndProc
  1. Готово!
  2. (Старайтесь всегда использовать GetLastError в случае сбоя Win32 API и выдайте результат, когда вы что-то спросите)
2

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]