我用钩子函数拦截指定进程(自己使用CreateProcess加载的进程)按键消息,SetWindowsHookEx执行成功,但是在目标进程窗口按键时,目标进程崩溃? WH_KEYBOARD换成WH_CBT则目标进程直接崩溃. 换句话说,只要HOOK成功,就会使目标进程不行.
/////////////////////////////////////////////////////////////////////////////////////////////
//加载进程
PROCESS_INFORMATION pi;
if( !LoadApp("d:\\spm.exe", "d:\\", &pi) )
{
return;
}
//获取HookProc函数所在DLL的句柄DLL为自己创建
HMODULE dllHinstance = GetModuleHandle("HookDll.dll");
Sleep(100);
创建钩子,可以成功
HHOOK hook = SetWindowsHookEx(WH_KEYBOARD, CheckWindowHookProc, dllHinstance, pi.dwThreadId);
if(hook)
{
//UnhookWindowsHookEx(hook);
}
//DLL中的HookProc函数,#define HOOKDLL_API __declspec(dllexport)
HOOKDLL_API LRESULT CALLBACK CheckWindowHookProc(int nCode, WPARAM wParam ,LPARAM lParam)
{
::MessageBox(NULL, "hook ok", "hook", 0);
return 0; //CallNextHookEx(0, nCode, wParam, lParam);
}