问题的内容是这样的:
一个全局键盘钩子(DLL)测试通过
LRESULT __declspec(dllexport)__stdcall CALLBACK KeyboardProc(int nCode,WPARAM wParam,LPARAM lParam)
{
if(((DWORD)lParam&0x40000000) && (HC_ACTION==nCode))
{
switch(wParam)
{ case 'A':pWnd->SendMessage(WM_KEYDOWN,0x41,0); break;
case 'D': pWnd->SendMessage(WM_KEYDOWN,0x44,0);break;
case ' ': AfxMessageBox("空格");
} } LRESULT RetVal = CallNextHookEx( hkb, nCode, wParam, lParam );
return RetVal;
}
其中pWnd是一个CWnd的指针,全局变量,其初始化为
pWnd=::AfxGetMainWnd( );
现在要让它往调用它EXE程序的窗口发WM_CHAR消息,当EXE成序是当前窗口时,成功,但它处于非激活状态时,窗口却收不到消息,请问要怎么改???
一个全局键盘钩子(DLL)测试通过
LRESULT __declspec(dllexport)__stdcall CALLBACK KeyboardProc(int nCode,WPARAM wParam,LPARAM lParam)
{
if(((DWORD)lParam&0x40000000) && (HC_ACTION==nCode))
{
switch(wParam)
{ case 'A':pWnd->SendMessage(WM_KEYDOWN,0x41,0); break;
case 'D': pWnd->SendMessage(WM_KEYDOWN,0x44,0);break;
case ' ': AfxMessageBox("空格");
} } LRESULT RetVal = CallNextHookEx( hkb, nCode, wParam, lParam );
return RetVal;
}
其中pWnd是一个CWnd的指针,全局变量,其初始化为
pWnd=::AfxGetMainWnd( );
现在要让它往调用它EXE程序的窗口发WM_CHAR消息,当EXE成序是当前窗口时,成功,但它处于非激活状态时,窗口却收不到消息,请问要怎么改???
老大该给分了 呵呵
in dll
tatic LRESULT CALLBACK LauncherHook(int nCode, WPARAM wParam, LPARAM lParam)
{
if((lParam & 0x80000000)&&(HC_ACTION==nCode))
{
switch (wParam)
{
case '1':
{ HWND hwnd=FindWindow(NULL,"MAIN WINDOW");
if(hwnd!=NULL)
SendMessage(hwnd,WM_KEYDOWN,0x41,0); else
AfxMessageBox("hwnd is NULL");
return true;//屏蔽按键之前的功能
}
break;
default :
break;
}
}
::CallNextHookEx(k_hhook,nCode,wParam,lParam);
return false;
}