2014-03-04 72 views
0

我试图将虚拟按键按下发送到应用程序。我尝试使用SendKeys.Send("{6}");,但应用程序收到它像一个字符串或类似的东西,因为它不起作用。我想发送密钥的应用程序是VisualBoy Advance。我的代码只允许我使用GUI远程播放,所以当我在GUI上按左时,VBA应该会收到按键。将按键发送到应用程序

代码的一部分:

case "derecha": 
    SendKeys.SendWait("{4}"); 
    break; 

回答

0

{}字符是特殊的转义字符。我不认为6是一个逃生值。看看http://msdn.microsoft.com/en-us/library/system.windows.forms.sendkeys.send(v=vs.110).aspx已知的逃生。例如,SendKeys.SendWait("{Right}");会发送右箭头键。

然而,

许多游戏和模拟器会使用低级别的键盘钩子读取键盘状态。找到使用Windows事件模型进行键盘阅读的游戏是非常罕见的。 SendKeys只发送到Windows消息传递系统。您可能需要更低级的事件发送方式。

如果目标应用程序使用的DirectInput,您可能能够使用SendInput功能从user32.dll

也有拦截库,但我从来没有用过它自己:

+0

是!我目前将我的代码更改为: case“derecha”: keybd_event(0x33,0,0x0001,0); 012bdkeybd_event(0x33,0,0x0002,0); 休息; 但仍然没有工作,也许有点按下和按钮之间的时间? –

+0

是的,我会在里面放置一个'Thread.Sleep(34)' - 这应该是大约2帧的键值。 –

+0

感谢您的回复,我已经完成了我的代码,按键的最终脚本是:keybd_event(0x35,0,0,0); Thread.Sleep(15); 012bdkeybd_event(0x35,0,0x0002,0); 它运行良好并与任何程序进行交互:D –

相关问题