改变键值要Hook GetMessage,改变WM_KEYDOWN里的扫描码。你可以开个notepad试一下。
不是Hook keyboard.很早以前就解决过了。
不是Hook keyboard.很早以前就解决过了。
解决方案 »
- AcAdDoubleClickEdit 在 arx2010 中 变到哪里了?高手请进!!!
- IE的文件菜单-》发送邮件页面,这个功能如何实现?
- ExtTextOut能输出指定颜色和字体的字符到指定HDC上吗?
- 怎样在用户锁定屏幕或屏幕保护状态下抓图
- 数据类型转换
- wise for windows install, wise installmaster, Wise Installation System.有什么区别?
- _RecordsetPtr记录集的参数查询
- ASSERT出了点问题,大家来帮助看看。解决后用分数答谢所有关注这个帖子的朋友!
- 简单问题,在线等待!
- 哪有opengl红宝书中文版下载
- Linux的C++编译器是不是有问题?
- 抓WM_CHAR时的问题.
还有你说Hook keyboard很早以前就解决了,可是我看都没有实质行的解决!
是SetWindowsHookEx(WH_GETMESSAGE,..
在GetMessage的CallBack 里,
case message
WM_KEYDOWN:
//改扫描码吧。就这么简单。
switch(pMsg->message)
case WM_KEYDOWN:
pMsg->wParam中存的是十六进制的键值
不行哎,倒是死了好几次机!
演示a->b
/////////////////////////////////////////////////////////////////////////////////////////////
//GetMessage钩子过程
LRESULT CALLBACK GetMsgProc(int nCode,WPARAM wParam,LPARAM lParam)
{ MSG *pMsg = (MSG*)lParam;
if(
pMsg->message ==WM_KEYDOWN
)
{
if(pMsg->wParam == 'A')
{
pMsg->wParam = 'B';
pMsg->lParam =( (pMsg->lParam & 0xFF00FFFF)|0x00300000);
}
} return ::CallNextHookEx (glhGetMsgHook,nCode,wParam,lParam);
}
太感谢你了,是很实用,这个问题曾困绕我了很长一段时间,今天终于得到你老兄的帮助,实在是感激不尽,给你加分了。
可是我还是不明白为什么用WH_KEYBOARD不能改变键值?望指点!