You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何确认记事本中存在UntitledNotepad控件?附pywinauto代码疑问

如何确认记事本中的UntitledNotepad控件?

先看你从pywinauto官网复制的示例代码:

from pywinauto.application import Application
app = Application().start("notepad.exe")
app.UntitledNotepad.menu_select("Help->About Notepad")
app.AboutNotepad.OK.click()
app.UntitledNotepad.Edit.type_keys("pywinauto Works!", with_spaces = True)

你的疑问是:

如何得知记事本存在UntitledNotepad控件?我使用AutoIt获取控件信息时,无法获取包括UntitledNotepad在内的部分控件信息,但上述代码却能识别该控件,请告知确认记事本中存在UntitledNotepad控件的方法。


其实这个UntitledNotepad并不是传统意义上的“子控件”,它是记事本主窗口的标题文本,pywinauto允许你直接通过窗口标题来快速定位窗口,这也是它的便捷之处。

要确认这个窗口的存在以及相关信息,你可以用这几种方法:

  • 用pywinauto自带的inspect工具
    启动记事本后,打开命令行运行pywinauto.inspect,把鼠标移到记事本主窗口上,工具会显示窗口的所有属性。其中Name属性就是Untitled - Notepad,pywinauto会自动处理标题里的空格和连字符,所以你可以用简化后的UntitledNotepad或者完整标题"Untitled - Notepad"来定位这个窗口。

  • 用Windows自带的Inspect.exe工具
    这个工具系统自带,搜索就能找到。操作和上面一样,定位到记事本窗口后,查看它的Name属性,就能看到对应的标题内容,这就是代码里UntitledNotepad的来源。

  • 在代码里打印所有窗口
    写一小段代码来列出记事本的所有窗口,直观确认:

    from pywinauto.application import Application
    app = Application().connect(path="notepad.exe")
    # 打印所有窗口的标题和类名
    for window in app.windows():
        print(f"窗口标题: {window.window_text()}, 窗口类名: {window.class_name()}")
    

    运行后你会看到输出里有窗口标题: Untitled - Notepad, 窗口类名: Notepad,这就是代码中UntitledNotepad对应的窗口。

至于AutoIt获取不到的原因,大概率是两者的识别逻辑不同:AutoIt可能更偏向于控件的类名、控件ID这类标识,而pywinauto优先支持标题定位,同时也支持类名定位——比如你把代码里的app.UntitledNotepad换成app.Notepad,同样能正常运行,因为Notepad是主窗口的类名。

内容的提问来源于stack exchange,提问作者user3300468

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.14 08:56:52