vb 全局模拟按键无效的问题

来源:百度知道 编辑:UC知道 时间:2024/07/05 07:27:12
我想在《新破天一剑》里模拟F1,F2,F9,左键连点.
用sendkeys,keybd_event,mouse_event,在《新破天一剑》里就会变成无效。
还有没有什么其他的模拟按键的方法?
我用《按键精灵》时,可以模拟出F1及连点。
不知道《按键精灵》是用的什么方式。

各位大大,发点代码上来啊- -
在游戏世界可以使用鼠标连点,但是一切换的背包框或人物属性框,连点就会失效。
——————————
sendkeys,keybd_event,mouse_event,WinIo.dll都试了。。不行哦。汗- -
有没有高人来讲解下呀- -
——————————
回答者: fdfun 我已经讲过了。keybd_event行不通- -
——————————
我是用的mouse_event模拟的鼠标连点。
启动了连点后,在游戏世界和其他窗口(像QQ窗口,桌面)之间移过来移过去,都能实现连点。
但一移动到属性框,立马失效- -

据说如果局部钩子乃至全局钩子都无法搞定的游戏,就必须尝试使用驱动级模拟,我只搞过全局钩子,驱动级没有尝试过。不过有一篇很好的文章你可以参考一下:

“ 如果上面的方法你都试过了,可是你发现目标程序却仍然顽固的不接受你模拟的消息,寒~~~~~~~~~还好,我还剩下最后一招,这就是驱动级模拟:直接读写键盘的硬件端口!
有一些使用DirectX接口的游戏程序,它们在读取键盘操作时绕过了windows的消息机制,而使用DirectInput.这是因为有些游戏对实时性控制的要求比较高,比如赛车游戏,要求以最快速度响应键盘输入。而windows消息由于是队列形式的,消息在传递时会有不少延迟,有时1秒钟也就传递十几条消息,这个速度达不到游戏的要求。而DirectInput则绕过了windows消息,直接与键盘驱动程序打交道,效率当然提高了不少。因此也就造成,对这样的程序无论用PostMessage或者是keybd_event都不会有反应,因为这些函数都在较高层。对于这样的程序,只好用直接读写键盘端口的方法来模拟硬件事件了……”

详情请参考:
VB实行鼠标键盘驱动级模拟 http://www.game191.com/read.php?tid=490

====补充:
这么厉害的游戏?值得一试……
你尝试一下在游戏环境中先不发送模拟按键信息,仅拦截键盘信息看看能不能成功?就弹出一个msgbox来试试。如果拦截部分能成功,但是游戏仍然不接受模拟的信息,那就要命了,据我所知使用WinIo.dll已经是很底层的方法了。这个有意思,我今晚亲自吧游戏下载回来试试看。

==== .......
如果你都已经在游戏里面成功实现了发送模拟按键信息,那就是方法奏效了呀。至于你打开其他包裹栏之类的会失效,那不是因为模拟的过程失效了吧。那是因为窗体的焦点发生了转移,当焦点不在游戏人物操作的那个窗体的时候,是没办法向这个窗体发送模拟按键信息的(如果你是用的WinIo.dll方法的话