功能就像一般的改键工具一样,比如在按下"A"键时实现"B"键的功能。
我尝试用钩子来获得了按下的键值,然后用keybd_event来实现替换键的功能:
LRESULT CALLBACK KeyboardProc(int nCode,WPARAM wParam,LPARAM lParam)
{
if(((DWORD)lParam&0x40000000) && (HC_ACTION==nCode))
{ if (wParam== '1')
{
keybd_event('2', 0, 0, 0);keybd_event('2', 0, KEYEVENTF_KEYUP, 0);
}
} LRESULT RetVal = CallNextHookEx( hkb, nCode, wParam, lParam );
return RetVal;
}
但是运行时我发现在按下“1”键的时候,输出的是"12",我想知道怎么屏蔽掉原键的消息。如果直接return TRUE 的话就会屏蔽掉所有按键。
我尝试用钩子来获得了按下的键值,然后用keybd_event来实现替换键的功能:
LRESULT CALLBACK KeyboardProc(int nCode,WPARAM wParam,LPARAM lParam)
{
if(((DWORD)lParam&0x40000000) && (HC_ACTION==nCode))
{ if (wParam== '1')
{
keybd_event('2', 0, 0, 0);keybd_event('2', 0, KEYEVENTF_KEYUP, 0);
}
} LRESULT RetVal = CallNextHookEx( hkb, nCode, wParam, lParam );
return RetVal;
}
但是运行时我发现在按下“1”键的时候,输出的是"12",我想知道怎么屏蔽掉原键的消息。如果直接return TRUE 的话就会屏蔽掉所有按键。
解决方案 »
- 打开ClassWizard,出现“parsing error:Identifier expected"
- 请教:线程死循环
- NTService + socket 的问题
- 谁给小弟讲讲什么是宏?干什么的?怎么用?----up有分!
- 请教:如何直接和SMTP服务器对话通过VC组件直接发送邮件?
- 急救!毕业设计在即!如何实现修改flexgrid中的数据!
- 如何禁止分隔条移动?
- 在VC里,怎样控制应用程序的打开(请见详情)?
- VS2010MFC多文档子窗体平铺和层叠
- 如何把CD文件格式转成mp3格式?
- 怎样将菜单中的复制、剪切、粘帖的选项变灰?
- 程序有时运行正常,有时出现 "该内存不能为written"怎么回事?
LRESULT CALLBACK KeyboardProc(int nCode,WPARAM wParam,LPARAM lParam)
{
if(((DWORD)lParam&0x40000000) && (HC_ACTION==nCode))
{ if (wParam== '1')
{
keybd_event('2', 0, 0, 0);
keybd_event('2', 0, KEYEVENTF_KEYUP, 0);
return TRUE;
}
} LRESULT RetVal = CallNextHookEx( hkb, nCode, wParam, lParam );
return RetVal;
}
LRESULT CALLBACK KeyboardProc(int nCode,WPARAM wParam,LPARAM lParam)
{
if (nCode >= 0 && wParam == '1')
{
DWORD flags = 0;
if ((DWORD)lParam & 0x80000000))
flags = KEYEVENTF_KEYUP;
keybd_event('2', 0, flags, 0);
return TRUE;
}
return CallNextHookEx(hkb, nCode, wParam, lParam);
}
能告诉我原因吗?再次感谢!