我使用 WinForms、C#、AxMsTscNotSafeForScripting 工具编写了一个小客户端,并且我需要在 VM 上发送 Win+R(是的,我知道,有一种方法可以在没有 RunDialog 的情况下远程启动应用程序,但我需要这样做)。我很快找到了不错的 lib InputSimulator
,它可以在我的主机上正确模拟所有内容,但对 VM 没有影响。
实际上,它可以将整个发送string
到记事本中,但是当它处理 VirtualKeyCodes 时,什么也没有发生。在深入研究谷歌之后,我发现了WindowsAPI.SendInput
with methods
的用法
void PressKey(char ch, bool press)
void KeyDown(ushort scanCode)
void KeyUp(ushort scanCode)
。
PressKey
正在使用 VM,但是我需要的KeyDown
and不正确。KeyUp
例如,81 是“Q”的 ScanCode,但它打印的是“.”。在记事本中,82 代表“R”,但我得到“0”,而 91 什么也没有,那是 Windows 键。如果我用键盘按键,一切正常,所以问题不在于 KeyPreview、EnableWindowsKey 等设置两个系统都是 Win7、Oracle VM VirtualBox。
即使我的方式是无望的,还有什么其他方法可以将 Win+R 以编程方式发送到 VM?帮助将不胜感激!