跪求高人指点 模拟键盘输入的问题 困扰我两天了,要崩溃了
我在做WOW外挂的事后碰到一个怪事,要气晕我了。
我用keybd_event或者SendInput往其中输入字符全无问题。
而,该游戏的人物跑动也是键盘控制的,不管我如何使用以上两种方法,游戏人物就是不动。
我直接按键盘是绝对可以动的。但是模拟就不行了。
我也试了一下,如果我按一下马上就释放键盘,可能导致人物没有跑动,所以我估计是没有模拟出键盘被长期按住的效果。
类似以下代码无效:
for(int n=0;n <10;n++) ::SendMessage(m_hWnd[1],WM_KEYDOWN,VK_UP,10);
::SendMessage(m_hWnd[1],WM_KEYUP,VK_UP,10);
for(n=0;n <10;n++) ::SendMessage(m_hWnd[1],WM_CHAR,VK_UP,10);
::SendMessage(m_hWnd[1],WM_CHAR,VK_UP,10);
for(n=0;n <10;n++) ::SendMessage(m_hWnd[1],WM_IME_KEYDOWN,0x77,10);
::SendMessage(m_hWnd[1],WM_IME_KEYUP,0x77,10);
::keybd_event(0x11,MapVirtualKey(0x77,0),0,0);
::keybd_event(0x11,MapVirtualKey(0x77,0),KEYEVENTF_KEYUP,0);
for(n=0;n <10;n++) keybd_event(VK_UP,0,0,0);
::keybd_event(VK_UP,MapVirtualKey(VK_UP,0),KEYEVENTF_KEYUP,0);
现在我的问题是:
1。如何模拟键盘被长期按住的效果。
2。模拟出来的时候,如何控制按住的时间长短,因为游戏人物是要按某路径跑的。所以按的长短可能决定其在某路径上所跑的距离。
重分嘉奖!关注有奖!还可以加分!!
[解决办法]
这样呢
::keybd_event(0x11,MapVirtualKey(0x77,0),0,0);
sleep(1000);
::keybd_event(0x11,MapVirtualKey(0x77,0),KEYEVENTF_KEYUP,0);
[解决办法]
楼上的做法就可以了。不过不用延迟这么长时间,20ms就可以了。
[解决办法]
keybd_event直接给 'W ', 'A ', 'S ', 'D ', 'Q ', 'E '
[解决办法]
用这个吧
::keybd_event(VK_UP,0,0,0);
Sleep(毫秒值); //这个决定按键时间的长短
::keybd_event(VK_UP,MapVirtualKey(VK_UP,0),KEYEVENTF_KEYUP,0);
keybd_event( 'W ',0,0,0);
Sleep(毫秒值);
::keybd_event( 'W ',MapVirtualKey( 'W ',0),KEYEVENTF_KEYUP,0);
其他几个给 'W ', 'A ', 'S ', 'D ', 'Q ', 'E '不用说了吧?