Проблема с хуками под Windows XP.
От: isniper  
Дата: 28.10.03 12:56
Оценка:
Мне нужно считывать через хук клавиатуру!
Я сделал следующее: создал библиотеку на основе Win32 static library:
.cpp:
#pragma data_seg(".shared")
HINSTANCE hInst = 0;
HHOOK hHook = 0;
HWND TargetWnd = 0;
#pragma data_seg()
#pragma comment(linker, "/section:.shared,rws")

static LRESULT CALLBACK KeyboardProc(UINT nCode, WPARAM wParam, LPARAM lParam) {
if(nCode < 0) return CallNextHookEx(hHook2, nCode, wParam, lParam);
...
return CallNextHookEx(hHook2,nCode,wParam,lParam);
}
BOOL APIENTRY DllMain( HANDLE hModule,DWORD ul_reason_for_call,LPVOID lpReserved) {
hInst=(HINSTANCE)hModule;
return TRUE;
}
void InstallHook(HWND hWnd) {
TargetWnd = hWnd;
hHook = SetWindowsHookEx(WH_KEYBOARD,(HOOKPROC)KeyboardProc,hInst,0);
}
void UninstallHook() {
UnhookWindowsHookEx(hHook);
}
.h файл:
void InstallHook(HWND hWnd);
void UninstallHook();

Подключил .lib и .h файлы к своей проге и в самой проге уже вызываю:
InstallHook(m_hWnd);
UninstallHook();
Проблема заключается в том, что под 98-й виндой все работает, а под ХР не хочет (функция SetWindowsHookEx возвращает NULL).
Заранее спасибо за помощь!
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.