【问题标题】:Possible to interact with Windows dialog box from Python?可以从 Python 与 Windows 对话框交互吗?
【发布时间】:2015-07-15 10:10:57
【问题描述】:

所以我环顾四周,这是我能找到的最接近我需要做的事情: http://bytes.com/topic/python/answers/23100-windows-dialog-box-removal

但这只是其中的一部分。

所以我有一个需要完全自动化运行的脚本。目前它被一个提示用户单击“确定”的 Windows 对话框停止。

是否可以注册某种处理程序,当对话框打开时触发并为其选择“确定”选项?任何想法如何做到这一点/我可以在哪里获得更多信息?

注意:我的目标不仅仅是让代码继续运行,还要求在继续之前在对话框中选择“确定”。

【问题讨论】:

  • 您应该将此问题重命名为Changing windows application dialog box behavior from Python

标签: python windows dialog


【解决方案1】:

你必须在后台创建一个thread。不同的线程可以同时运行。对话框停止当前线程并等待用户做出选择。这是正常行为。

Python 有非常简单的线程 API。 Thread 是作为参数传递给线程类构造函数的函数。线程然后执行这个函数,你可以启动几个线程,它们不会锁定当前线程。将您的对话框或背景代码移至单独的线程。

样品:Simple threading event example 更多信息:https://docs.python.org/3/library/threading.html

使程序自动在该对话框中选择确定对于 Python 程序是不可能的。嗯,有几种技术,但它们需要 C++ 和其他扩展技能。

【讨论】:

  • 看起来这绝对是正确的轨道。尽管在继续之前关闭对话框是必需功能的一部分(我只是在问题中添加了一个注释来澄清这一点)。
  • 您可以像创建它一样使用 shell 终止进程,如果需要,可以从任何线程中终止,但您不能更改程序的行为(您有源代码吗?)。更新了答案@user3420034
  • 从这篇文章看来肯定是:bytes.com/topic/python/answers/23100-windows-dialog-box-removal我只是不确定如何实现它。
  • @user3420034 这是你可以用 python 做的最糟糕的事情,停止它。为此编写一个 C 应用程序并在您的 python 应用程序中使用它。
  • 我没有那种奢侈,我的项目规范要求它在 Python 中完成。如果您不确定解决方案是什么,不用担心,但是像这样的 cmets 非常无用 - 我知道在基于 .NET 的语言中这是微不足道的。
【解决方案2】:

有一个名为Lackey 的包,它可以扫描屏幕以查找预定义的模式(在本例中为对话框的图像),然后键入键盘(在本例中为“Enter”)。

它是Sikuli 的python 实现。所以所有支持文档都可以在here找到。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-01-10
    • 1970-01-01
    • 2011-10-07
    • 1970-01-01
    相关资源
    最近更新 更多