Ну, я пробовал другое решение моей проблемы, но оно просто не работает.
Я вызываю SetWindowsHookExA, а затем, когда я нажимаю клавишу, окно сообщения не отображается. Что делать?
это мой код (это DLL, которая загружается другой DLL, загружаемой программой):
#include <Windows.h>
HINSTANCE gl_hThisInstance = NULL;
HHOOK hHook = NULL;
LRESULT CALLBACK KeyHit(int code,WPARAM wParam,LPARAM lParam);
BOOL APIENTRY DllMain( HANDLE hModule, DWORD ul_reason_for_call, LPVOID lpReserved)
{
switch (ul_reason_for_call)
{
case DLL_PROCESS_ATTACH:
gl_hThisInstance = (HINSTANCE)hModule;
hHook = SetWindowsHookExA(
WH_KEYBOARD,
KeyHit,
//(HWND)gl_hThisInstance//not working
0,//not working
//(DWORD)gl_hThisInstance//not working
//GetCurrentThreadId()//even not working with this
0//not working
);
break;
}
return TRUE;
}
LRESULT CALLBACK KeyHit(int code,WPARAM wParam,LPARAM lParam)
{
MessageBox(0,"PRESSED","PRESSED",0);
return CallNextHookEx(hHook,code,wParam,lParam);
}
gl_hThisInstance
› Это уже правильный тип... - person Mooing Duck   schedule 13.12.2012(DWORD)gl_hThisInstance//not working
, что это значит? - person Mooing Duck   schedule 13.12.2012HINSTANCE
так что это тоже не повод кастовать. - person Mooing Duck   schedule 13.12.2012SetWindowsHookEx(WH_GETMESSAGE, MsgProc, hiLib, GetWindowThreadProcessId(hwnd, NULL));
- person Stan   schedule 13.12.2012