一款游戏,移动角色的键位分别是功能键区下面的“上,下,左,右”。用起来极其不爽,欲写一个程序,让WSAD代替上下左右,对应关系是:
W=上
S=下
A=左
D=右我曾经尝试用SendKey,虽然可以实现,但是现在遇到特别头痛的问题,即使我按下了W,角色的确也往上走了,但是游戏接收到了"W"键。游戏中的聊天窗口中不停的“WWWWWWWWWWWWWWWWWWWWWWWWWW” 让人很烦。现在问题就是,如何在按下W的时候,让游戏只接收到“上”,不让他接收到“W”?
据说要用HOOK什么的了,希望能得到各位大大的地细心详细的指导。或者以前有过类似的问题,希望大家能提供相关的连接,都给分。顶者也象征性的送分。哈哈~
W=上
S=下
A=左
D=右我曾经尝试用SendKey,虽然可以实现,但是现在遇到特别头痛的问题,即使我按下了W,角色的确也往上走了,但是游戏接收到了"W"键。游戏中的聊天窗口中不停的“WWWWWWWWWWWWWWWWWWWWWWWWWW” 让人很烦。现在问题就是,如何在按下W的时候,让游戏只接收到“上”,不让他接收到“W”?
据说要用HOOK什么的了,希望能得到各位大大的地细心详细的指导。或者以前有过类似的问题,希望大家能提供相关的连接,都给分。顶者也象征性的送分。哈哈~
LowLevelKeyboardHook该方法在当前桌面的全局范围内创建一个低级别的键盘挂钩层。在调用 SetWindowsHookEx 时指定的 LowLevelKeyboardProc 回调函数将接收所有的键盘输入。处理完键盘输入后,LowLevelKeyboardProc 应调用 CallNextHookEx 以使下一个挂钩链(很可能是目标应用程序)能够接收输入。由于 LowLevelKeyboardProc 接收了所有的键盘事件,因此可以很容易地将其用作一个状态机,并从 LowLevelKeyboardHook 中返回而不把最后的键事件转给其他应用程序。
▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲
这个是msdn的说明:
http://msdn.microsoft.com/library/en-us/winui/winui/windowsuserinterface/windowing/hooks/hookreference/hookfunctions/setwindowshookex.asp?frame=true
大体思路是用LowLevelKeyboardHook拦截WSAD键,当拦截到W时使用keybd_event()创建一个按“上”键的信息给OS。注意,这个按“上”键的信息同样会被LowLevelKeyboardHook拦截到,所以千万只能拦WSAD,不能拦“上下左右”
具体的一句两句话说不清楚,[email protected]我的邮箱,发信详细谈。
系统HOOK的话最好是改变抽象层实现,不然会导致紊乱的。。
幸会~~原来你也来这里啊~
知道我是怎么知道你做出来的么?:)
我把全国中小学电脑制作活动公示的所有程序作品都down下来欣赏了,然后,就在baidu搜你的id,找到了你的blog。不过你的好象也没被选中去面试是吧?我也没被选上。
不过,你们准备的很好,竟把所有运行环境都打包了,一个个下来3,4百mb
我们就差远了,省里也不重视。
握手先,你也参加那个比赛了阿,你做的是什么?
我也基本所有程序都载下来了……唉,有的好烂的程序也上去了没办法……