首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > VC/MFC >

跪求高人指点 模拟键盘输入的有关问题 困扰小弟我两天了,要崩溃了

2012-03-28 
跪求高人指点 模拟键盘输入的问题 困扰我两天了,要崩溃了我在做WOW外挂的事后碰到一个怪事,要气晕我了。我

跪求高人指点 模拟键盘输入的问题 困扰我两天了,要崩溃了
我在做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 '不用说了吧?

热点排行