想写一个程序:在记事本上用键盘打'A',让记事本显示'B';
我现在能拦截键盘消息,也能得到记事本的句柄,我用下面方法: wParam = 'B';(假设已探测到键盘'A' KEY_DOWN事件)
::SendMessage(hwnd,WM_KEYDOWN,wParam,lParam);但结果是记事本上还是写了'A',请问我该怎么办?
先谢谢了!
我现在能拦截键盘消息,也能得到记事本的句柄,我用下面方法: wParam = 'B';(假设已探测到键盘'A' KEY_DOWN事件)
::SendMessage(hwnd,WM_KEYDOWN,wParam,lParam);但结果是记事本上还是写了'A',请问我该怎么办?
先谢谢了!
::SendMessage(hwnd,WM_KEYDOWN,wParam,lParam);
return;不要执行后面的那个
我是这样写的:(片断)
LRESULT __declspec(dllexport) CALLBACK KeyboardProc(int nCode,WPARAM wParam,LPARAM lParam)
{
HWND hwnd = GetForegroundWindow();
if(((DWORD)lParam&0x40000000) && (HC_ACTION==nCode))
{
switch(wParam) //键盘按键标识
{
case 'A':
{
wParam = 'B';
//::SendMessage(hwnd,WM_KEYDOWN,wParam,lParam);
}break; //当字母键A被按下
case 'B':MessageBox(0,"B","LOOK",MB_OK);break; //test
case 'C':MessageBox(0,"C","LOOK",MB_OK);break;
}
}
LRESULT RetVal = CallNextHookEx( hkb, nCode, wParam, lParam );
return RetVal;
}在记事本上试的时候: 按 'A' ------- 记事本上显示'A'
按 'B' ------- 记事本上显示'B',紧接着出现消息框
按 'C' ------- 记事本上显示'C',紧接着出现消息框
不知是哪有问题?
但KEY的消息发到NOTEPAD的消息队列里去了,
你并没有截获到它
钩NOTEPAD 的 WM_KEYDOWN消息
比如说 setWindowsHookEx(?,(HOOKPROC)MessageProc,hins,0);
中?应该是什么
MessageProc(...) 中哪个参数可以处理消息?
能否举一小例?