Можно ли использовать win32api.SendMessage
для отправки символов в программу, которая, кажется, работает в каком-то окне DOS?
В моем диспетчере задач Windows я вижу процесс под названием ntvdm. exe (очевидно, это «Виртуальная машина DOS»). Похоже, что wowexec.exe (= "окна на окнах") и мой target.exe оба "внутри" этого ntvdm.exe , поскольку они имеютнет собственного PID в диспетчере задач. Вместо этого они отображаются с отступом ниже ntvdm.exe .
Я попытался указать все возможные дескрипторы окна для моего target.exe (от родителя = 0 до каждого ребенка) через win32api.SendMessage(<mywindowhandle>, win32con.WM_CHAR, 0x41, 0)
, но «A» никогда не появляется в программе. SendMessage
работает в других программах, таких как блокнот и блокнот ++. Только программа DOS вызывает у меня головную боль.
Использование shell = win32com.client.Dispatch("WScript.Shell")
однако в сочетании с shell.AppAcitvate
(с использованием PID ntvdm.exe ) и shell.SendKeys
работает! Разве это не отправляет сообщения "WM_CHAR" также в фоновом режиме?