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