[1] 代码是:
import pywinauto
app = pywinauto.Application()
mainApplication = app.window_(title_re = ".*Environment.*")
mainApplication.Minimize()
mainApplication.Edit.SetText("test", with_spaces=True)
mainApplication.Edit.SetText("{ENTER}")
[2] 输出是:
File "C:\Python27\lib\site-packages\pywinauto\application.py", line 239, in __getattr__
ctrls = _resolve_control(self.criteria)
File "C:\Python27\lib\site-packages\pywinauto\application.py", line 754, in _resolve_control
raise e.original_exception
WindowNotFoundError
注意:如果我使用'TypeKeys'方法我没有遇到任何问题,但我想在应用程序中编写。即使没有设置焦点。
答案 0 :(得分:0)
不幸的是,cmd.exe在窗口内没有任何控件。因此,您无法向其发送WM_SETTEXT
消息。这就是SetText
无效的原因。它永远不会适用于cmd.exe,因为GUI自动化工具适用于GUI,而不适用于命令行。
通常,您可以使用标准模块subprocess
(类Popen
)通过管道与cmd.exe进程交互。
您可以尝试以下操作:
cmd.exe
,Popen
Connect(path='cmd.exe')
使用pywinauto,app.Window_().Minimize()
,p.stdin.write(someInput)
p
Popen
对象发送密钥。当您使用管道时,存在一些潜在的输入和输出流死锁的陷阱。 以下是解决某些问题的一种方法:Running an interactive command from within python