【发布时间】:2019-10-08 08:59:13
【问题描述】:
是否可以使用win32api.SendMessage 将字符发送到似乎在某种 DOS 机器中运行的程序?
在我的 Windows 任务管理器中,我看到一个名为 ntvdm.exe 的进程(显然那是“虚拟 DOS 机”)。看起来 wowexec.exe (= "windows on windows") 和我的 target.exe 都在 ntvdm.exe 的“内部”,因为他们在任务管理器中没有自己的 PID。相反,它们在 ntvdm.exe 下方显示为缩进。
我已尝试通过win32api.SendMessage(<mywindowhandle>, win32con.WM_CHAR, 0x41, 0) 为我的 target.exe(从父级 = 0 到每个子级)定位所有可能的窗口句柄,但“A”永远不会出现在程序中。 SendMessage 适用于其他程序,例如记事本和记事本++。只有DOS程序让我头疼。
将shell = win32com.client.Dispatch("WScript.Shell") 与shell.AppAcitvate 结合使用(使用ntvdm.exe 的PID)和shell.SendKeys 有效!那不是也在后台发送“WM_CHAR”消息吗?
【问题讨论】:
标签: winapi pywin32 wscript.shell