Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/349.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何使用';SetText';在命令提示符下?_Python_Pywinauto - Fatal编程技术网

Python 如何使用';SetText';在命令提示符下?

Python 如何使用';SetText';在命令提示符下?,python,pywinauto,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] 输出为:

[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”方法,我不会遇到任何问题,但我想在应用程序中编写。即使焦点不在它上面

不幸的是,cmd.exe在窗口中没有任何控件。因此,您无法向它发送
WM_SETTEXT
消息。这就是为什么
SetText
不起作用的原因。而且它永远不会对cmd.exe起作用,因为GUI自动化工具是针对GUI的,而不是针对命令行的

通常,您可以使用标准模块
子流程
(class
Popen
)通过管道与cmd.exe进程进行交互

您可以尝试以下操作:

  • 通过
    Popen
    运行
    cmd.exe
  • Connect(path='cmd.exe')
    使用pywinauto
  • 调用应用程序窗口最小化
  • 使用
    p.stdin.write(someInput)
    发送密钥,其中
    p
    Popen
    对象
  • 当您使用管道时,输入和输出流的潜在死锁存在一些陷阱。
    这里有一种解决一些问题的方法:

    什么是应用程序<代码>cmd.exe?顺便说一句,带_spaces=True的
    不是
    SetText
    的参数。代码不正确。[1]是。cmd exe。[2] “with_spaces=True”是“typekeys”的再现。我把它拿走了。非常感谢你帮我。我找到了一种将文本写入非活动CMM并进行提示的方法。导入win32gui导入win32con导入win32api handle=win32gui.FindWindow(无,u'Administrator:Environment')打印“测试”中文本的句柄:win32api.SendMessage(handle,win32con.WM_CHAR,ord(text),0)很棒的发现!我们将使用
    WM\u CHAR
    在pywinauto中实现
    SendChars
    方法。是否有某种方法可以使用某些消息检索控制台文本?如果你能找到它,请告诉我们。