大局 SetWindowsHookEx 对其他程序没效果
全局 SetWindowsHookEx 对其他程序没效果?
全局 SetWindowsHookEx 对其他程序没效果?
------解决方案--------------------
SetWindowsHookEx 只对当前进程有用。
------解决方案--------------------
你又用CallNextHookEx 把消息继续传给截获的程序了,所以没影响。你也可以不传递回去,就会其截获的程序照成影响了。
------解决方案--------------------
http://topic.****.net/t/20030513/03/1774836.html
这个回答的挺好 你看一下。
------解决方案--------------------
调用了SetCallBack,可以回调到外面的主程序,但是对其他的程序没有回调出来? 如果把g_Callback去掉,就可以弹出messagebox.
已经把回调函数设置成共享的
----------------------------
你应该调用的是在外面显式调用SetHookHwnd啊
全局 SetWindowsHookEx 对其他程序没效果?
BOOL STDCALL SetCallBack(FX_KEYBOARD_CALLBACK* pCallBack)
{
g_Callback = pCallBack;
return 1;
}
LRESULT CALLBACK KeyboardProc(
int code, // hook code
WPARAM wParam, // virtual-key code
LPARAM lParam // keystroke-message information
)
{
if(VK_F4==wParam && (1==(lParam>>29 & 1)))
{
SendMessage(g_Hwnd,WM_CLOSE,0,0);
UnhookWindowsHookEx(g_KeyBoard);
return 1;
}
else
{
DWORD curProId = GetCurrentProcessId();
DWORD curThreadId = GetCurrentThreadId();
char szbuf[256]={0};
sprintf(szbuf,"curProId =%ld,curThreadId =%ld",curProId ,curThreadId );
MessageBox ( NULL, szbuf, NULL, MB_OK ) ;
if(g_Callback)
{
g_Callback->DataCallback(g_Callback);
}
}
return CallNextHookEx ( hKeyboard, code, wParam, lParam ) ;
}
void STDCALL SetHookHwnd(HWND hwnd)
{
g_Hwnd = hwnd;
g_KeyBoard = SetWindowsHookEx(WH_KEYBOARD,KeyboardProc,GetModuleHandle("Hook"),0);
if(!g_KeyBoard)
{
DWORD dwErr = GetLastError();
int x = 0;
}
}
调用了SetCallBack,可以回调到外面的主程序,但是对其他的程序没有回调出来? 如果把g_Callback去掉,就可以弹出messagebox.
已经把回调函数设置成共享的
#pragma data_seg("MySec")
FX_KEYBOARD_CALLBACK* g_Callback = NULL;
HWND g_Hwnd = NULL;
HHOOK hKeyboard = NULL ;
HINSTANCE hDllInstance = NULL ;
#pragma data_seg()
#pragma comment(linker,"/section:MySec,RWS")
------解决方案--------------------
SetWindowsHookEx 只对当前进程有用。
------解决方案--------------------
你又用CallNextHookEx 把消息继续传给截获的程序了,所以没影响。你也可以不传递回去,就会其截获的程序照成影响了。
------解决方案--------------------
http://topic.****.net/t/20030513/03/1774836.html
这个回答的挺好 你看一下。
------解决方案--------------------
调用了SetCallBack,可以回调到外面的主程序,但是对其他的程序没有回调出来? 如果把g_Callback去掉,就可以弹出messagebox.
已经把回调函数设置成共享的
----------------------------
你应该调用的是在外面显式调用SetHookHwnd啊