是否可以使用win32api.SendMessage
将字符发送到似乎在某种 DOS 框中运行的程序?
在我的 Windows 任务管理器中,我看到一个名为ntvdm.exe的进程(显然那是“虚拟 DOS 机”)。看起来wowexec.exe(=“windows on windows”)和我的target.exe都在 ntvdm.exe 的“内部” ,因为它们在任务管理器中没有自己的 PID。相反,它们在ntvdm.exe下方显示为缩进。
我试图通过我的target.exe(从父级 = 0 到每个子级)定位所有可能的窗口句柄,但“A”从未到达程序中。适用于其他程序,例如记事本和记事本++。只有 DOS 程序让我头疼。win32api.SendMessage(<mywindowhandle>, win32con.WM_CHAR, 0x41, 0)
SendMessage
shell = win32com.client.Dispatch("WScript.Shell")
然而,结合使用(shell.AppAcitvate
使用ntvdm.exe的 PID )并且shell.SendKeys
有效!那不是也在后台发送“WM_CHAR”消息吗?