如何在命令提示符中使用“SetText”?

时间:2015-10-16 10:59:59

标签: python pywinauto

[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'方法我没有遇到任何问题,但我想在应用程序中编写。即使没有设置焦点。

1 个答案:

答案 0 :(得分:0)

不幸的是,cmd.exe在窗口内没有任何控件。因此,您无法向其发送WM_SETTEXT消息。这就是SetText无效的原因。它永远不会适用于cmd.exe,因为GUI自动化工具适用于GUI,而不适用于命令行。

通常,您可以使用标准模块subprocess(类Popen)通过管道与cmd.exe进程交互。

您可以尝试以下操作:

  1. 通过cmd.exe
  2. 运行Popen
  3. Connect(path='cmd.exe')使用pywinauto,
  4. 致电app.Window_().Minimize()
  5. 使用p.stdin.write(someInput) p Popen对象发送密钥。
  6. 当您使用管道时,存在一些潜在的输入和输出流死锁的陷阱。 以下是解决某些问题的一种方法:Running an interactive command from within python