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

我想在《新破天一剑》里模拟F1,F2,F9,左键连点.用sendkeys,keybd_event,mouse_event,在《新破天一剑》里就会变成无效。还有没有什么其他... 我想在《新破天一剑》里模拟F1,F2,F9,左键连点.
用sendkeys,keybd_event,mouse_event,在《新破天一剑》里就会变成无效。
还有没有什么其他的模拟按键的方法?
我用《按键精灵》时,可以模拟出F1及连点。
不知道《按键精灵》是用的什么方式。

各位大大,发点代码上来啊- -
在游戏世界可以使用鼠标连点,但是一切换的背包框或人物属性框,连点就会失效。
——————————
sendkeys,keybd_event,mouse_event,WinIo.dll都试了。。不行哦。汗- -
有没有高人来讲解下呀- -
——————————
回答者: fdfun 我已经讲过了。keybd_event行不通- -
——————————
我是用的mouse_event模拟的鼠标连点。
启动了连点后,在游戏世界和其他窗口(像QQ窗口,桌面)之间移过来移过去,都能实现连点。
但一移动到属性框,立马失效- -
展开
 我来答
翰林院里扫地的
2009-01-16 · TA获得超过308个赞
知道小有建树答主
回答量:245
采纳率:0%
帮助的人:0
展开全部
据说如果局部钩子乃至全局钩子都无法搞定的游戏,就必须尝试使用驱动级模拟,我只搞过全局钩子,驱动级没有尝试过。不过有一篇很好的文章你可以参考一下:

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

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

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

==== .......
如果你都已经在游戏里面成功实现了发送模拟按键信息,那就是方法奏效了呀。至于你打开其他包裹栏之类的会失效,那不是因为模拟的过程失效了吧。那是因为窗体的焦点发生了转移,当焦点不在游戏人物操作的那个窗体的时候,是没办法向这个窗体发送模拟按键信息的(如果你是用的WinIo.dll方法的话)。所以当你打开了包裹栏之后,鼠标连点的模拟就由包裹栏来接收了……
帐号已注销
2009-01-12 · TA获得超过223个赞
知道小有建树答主
回答量:305
采纳率:0%
帮助的人:334万
展开全部
一般这些游戏都会屏蔽系统相关操作,
防止被恶意模拟按键作弊。

先不断执行
GetForegroundWindow,
GetWindowText,
判断是否切换到了游戏窗口。
如果是的话就
SendMessage 句柄,WM_KEYDOWN,按键代码,0
SendMessage 句柄,WM_KEYUP,按键代码,0

具体的按键代码参看MSDN。引用:

Value Description
0–15 Specifies the repeat count for the current message. The value is the number of times the keystroke is autorepeated as a result of the user holding down the key. If the keystroke is held long enough, multiple messages are sent. However, the repeat count is not cumulative.
16–23 Specifies the scan code. The value depends on the original equipment manufacturer (OEM).
24 Specifies whether the key is an extended key, such as the right-hand ALT and CTRL keys that appear on an enhanced 101- or 102-key keyboard. The value is 1 if it is an extended key; otherwise, it is 0.
25–28 Reserved; do not use.
29 Specifies the context code. The value is always 0 for a WM_KEYDOWN message.
30 Specifies the previous key state. The value is 1 if the key is down before the message is sent, or it is zero if the key is up.
31 Specifies the transition state. The value is always zero for a WM_KEYDOWN message.
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
fdfun
2009-01-14 · TA获得超过950个赞
知道小有建树答主
回答量:1139
采纳率:0%
帮助的人:924万
展开全部
在游戏里面要模拟的话必须要用虚拟码
在模块:
Public Declare Sub keybd_event Lib "user32" (ByVal bVk As Byte, ByVal bScan As Byte, ByVal dwflags As Long, ByVal dwExtraInfo As Long)
Public Declare Function MapVirtualKey Lib "user32" Alias "MapVirtualKeyA" (ByVal wCode As Long, ByVal wMapType As Long) As Long
Public Const KEYEVENTF_KEYUP = &H2
在窗体:
keybd_event <ASCII码>, MapVirtualKey(<ASCII码> , 0), 0, 0
keybd_event <ASCII码>, MapVirtualKey(<ASCII码>, 0), KEYEVENTF_KEYUP, 0

其他参数:
常量 十六进制值 对应按键
VK_F1 70 F1 键
VK_F2 71 F2 键
VK_F3 72 F3 键
VK_F4 73 F4 键
VK_F5 74 F5 键
VK_F6 75 F6 键
VK_F7 76 F7 键
VK_F8 77 F8 键
VK_F9 78 F9 键
VK_F10 79 F10 键
VK_F11 7A F11 键
VK_F12 7B F12 键
VK_F13 7C F13 键
VK_F14 7D F14 键
VK_F15 7E F15 键
VK_F16 7F F16 键
VK_F17 80H F17 键
VK_F18 81H F18 键
VK_F19 82H F19 键
VK_F20 83H F20 键
VK_F21 84H F21 键
VK_F22 85H F22 键
VK_F23 86H F23 键
VK_F24 87H F24 键
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
Gerald_Bond
2009-01-11 · TA获得超过1003个赞
知道小有建树答主
回答量:590
采纳率:0%
帮助的人:606万
展开全部
一般情况下sendkeys就有效了,但可能被屏蔽。
keybd_event是比较底层的模拟了,应该是有效的,你是不是把句柄弄错了?你可以先发点特殊的按键如Esc试试效果,看句柄对不对。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
尼欧赵
2009-01-19 · TA获得超过823个赞
知道大有可为答主
回答量:1597
采纳率:0%
帮助的人:1213万
展开全部
一般是因为焦点不对产生的。即使你把它active了,但是不是输入焦点。比如你登录百度知道时就是这样,登录窗口已经变蓝了,但是你输入的字符却在下面的网页上,而不是在登录窗口里。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(11)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式