Python 在VirtualBox中键入时键盘模拟不起作用

Python 在VirtualBox中键入时键盘模拟不起作用,python,windows,keyboard,virtual-machine,ctypes,Python,Windows,Keyboard,Virtual Machine,Ctypes,我需要在python中模拟键盘键入,其中python程序在虚拟环境外运行,键入在虚拟环境内进行。下面的python程序正在计算机(主机)上运行,键入操作在记事本窗口VirtualBox中进行。这是必要的,以避免从虚拟计算机检测到键入是通过python程序完成的 下面的代码在正常情况下运行良好(即,当我模拟键入的窗口与python程序处于相同的环境中时),但是当我使用它在VirtualBox中的窗口中输入文本时,结果是完全随机的,例如,“Hi”变为“q89”或“Hi\r\n”突然变为“q89=”。

我需要在python中模拟键盘键入,其中python程序在虚拟环境外运行,键入在虚拟环境内进行。下面的python程序正在计算机(主机)上运行,键入操作在记事本窗口VirtualBox中进行。这是必要的,以避免从虚拟计算机检测到键入是通过python程序完成的

下面的代码在正常情况下运行良好(即,当我模拟键入的窗口与python程序处于相同的环境中时),但是当我使用它在VirtualBox中的窗口中输入文本时,结果是完全随机的,例如,“Hi”变为“q89”或“Hi\r\n”突然变为“q89=”。当我在virtualBox中运行程序和记事本窗口(我在其中键入它)时,一切也都会按预期运行。当python程序在主机上运行并且记事本窗口在virtualBox中时,这只是一个问题。有什么建议可能导致这种情况吗

导入ctypes
LONG=ctypes.c_LONG
DWORD=ctypes.c_ulong
ULONG_PTR=ctypes.POINTER(DWORD)
WORD=ctypes.c\u ushort
类鼠标输入(ctypes.Structure):
_字段=('dx',长),
('dy',LONG),
('mouseData',德沃德),
('dwFlags',DWORD),
(“时间”,德沃德),
('dwExtraInfo',ULONG_PTR))
类KEYBDINPUT(ctypes.Structure):
_字段=('wVk',WORD),
('wScan',单词),
('dwFlags',DWORD),
(“时间”,德沃德),
('dwExtraInfo',ULONG_PTR))
类硬件输入(ctypes.Structure):
_字段=('uMsg',DWORD),
(“wParamL”一词),
(“wParamH”,单词))
类输入联合(ctypes.Union):
_字段=('mi',鼠标输入),
('ki',keybd输入),
(“嗨,硬件输入”)
类输入(ctypes.Structure):
_字段=('type',DWORD),
(‘联合’,_输入联合))
输入\鼠标=0
键盘输入=1
输入_HARDWARD=2
车轮_δ=120
XBUTTON1=0x0001
XBUTTON2=0x0002
MOUSEEVENTF_绝对值=0x8000
MOUSEEVENTF_HWHEEL=0x01000
MOUSEEVENTF_MOVE=0x0001
MOUSEEVENTF\u MOVE\u NOCOALESCE=0x2000
MOUSEEVENTF_LEFTDOWN=0x0002
MOUSEEVENTF_LEFTUP=0x0004
MOUSEEVENTF_RIGHTDOWN=0x0008
MOUSEEVENTF_RIGHTUP=0x0010
MOUSEEVENTF_MIDDLEDOWN=0x0020
MOUSEEVENTF_MIDDLEUP=0x0040
MOUSEEVENTF_VIRTUALDESK=0x4000
MOUSEEVENTF_WHEEL=0x0800
MOUSEEVENTF_XDOWN=0x0080
MOUSEEVENTF_XUP=0x0100
VK_LBUTTON=0x01#鼠标左键
VK_RBUTTON=0x02#鼠标右键
VK_CANCEL=0x03#控制中断处理
VK_MBUTTON=0x04#鼠标中键
#(三键鼠标)
VK#U XBUTTON1=0x05#X1鼠标按钮
VK#U XBUTTON2=0x06#X2鼠标按钮
VK_BACK=0x08#退格键
VK#u TAB=0x09#制表键
VK_CLEAR=0x0C#清除键
VK_RETURN=0x0D#输入键
VK_SHIFT=0x10#SHIFT键
VK#U控件=0x11#CTRL键
VK#U菜单=0x12#ALT键
VK_PAUSE=0x13#暂停键
VK_大写=0x14#大写锁定键
VK_假名=0x15#IME假名模式
VK_韩语=0x15#输入法韩语模式
VK_JUNJA=0x17#IME JUNJA模式
VK_FINAL=0x18#输入法最终模式
VK_汉字=0x19#IME汉字模式
VK_汉字=0x19#输入法汉字模式
VK_ESCAPE=0x1B#ESC键
VK_CONVERT=0x1C#IME CONVERT
VK_非转换=0x1D#IME非转换
VK_ACCEPT=0x1E#IME ACCEPT
VK_MODECHANGE=0x1F#输入法模式更改请求
VK_SPACE=0x20#空格键
VK_PRIOR=0x21#向上翻页键
VK_NEXT=0x22#向下翻页键
VK_END=0x23#结束键
VK_HOME=0x24#主密钥
VK_LEFT=0x25#左箭头键
VK_向上=0x26向上箭头键
VK_RIGHT=0x27#右箭头键
VK_DOWN=0x28#向下箭头键
VK_SELECT=0x29#选择键
VK#u PRINT=0x2A#打印键
VK_EXECUTE=0x2B#执行键
VK_快照=0x2C#打印屏幕键
VK#U INSERT=0x2D#INS键
VK#u DELETE=0x2E#DEL键
VK#U HELP=0x2F#帮助键
VK_LWIN=0x5B#左Windows键(自然键盘)
VK_RWIN=0x5C#右Windows键(自然键盘)
VK_应用程序=0x5D#应用程序键(自然键盘)
VK_SLEEP=0x5F#计算机睡眠键
VK_NUMPAD0=0x60#数字键盘0键
VK_NUMPAD1=0x61#数字键盘1键
VK_NUMPAD2=0x62#数字键盘2键
VK_NUMPAD3=0x63#数字键盘3键
VK_NUMPAD4=0x64#数字键盘4键
VK_NUMPAD5=0x65#数字键盘5键
VK_NUMPAD6=0x66#数字键盘6键
VK_NUMPAD7=0x67#数字键盘7键
VK_NUMPAD8=0x68#数字键盘8键
VK_NUMPAD9=0x69#数字键盘9键
VK_乘法=0x6A#乘法键
VK_ADD=0x6B#添加键
VK_SEPARATOR=0x6C#分隔键
VK_减法=0x6D#减法键
VK_DECIMAL=0x6E#十进制键
VK_DIVIDE=0x6F#DIVIDE键
VK_F1=0x70#F1键
VK#U F2=0x71#F2键
VK#U F3=0x72#F3键
VK#U F4=0x73#F4键
VK_F5=0x74#F5键
VK#U F6=0x75#F6键
VK#u F7=0x76#F7 k