【问题标题】:Detecting when a Process (GUI) is "Done" even though it doesn't Exit?检测进程(GUI)何时“完成”,即使它没有退出?
【发布时间】:2011-10-28 21:31:13
【问题描述】:

我正在编写一个控制台应用程序,它可以检测 USB 驱动器、对其进行格式化,然后运行一个名为 UnetBootin 的程序来将 ISO 写入驱动器。一切正常,但问题是 UNetbootin 不会简单地“退出”,因此 .WaitForExit() 除非用户单击“退出”按钮,否则无法正常工作。

我能想象到解决这个问题的唯一方法是检查该按钮是否出现或尝试猜测进程是否以某种方式空闲。无论哪种情况,我都不知道从哪里开始。

【问题讨论】:

    标签: c# c#-4.0


    【解决方案1】:

    不管你怎么切,这都会很丑。我不知道有更好的方法,所以这里有一个适用于 AFAIK 的方法:

    1. 获取目标进程的PID(如果你可以调用WaitForExit,你已经拥有了)
    2. 获取handles to all windows of that process
    3. 在第 2 步中使用 GetWindowTextget the text of each and every window
    4. 如果任何窗口的文本等于“立即重新启动”,您就知道您已经完成了

    警告:在这一点上我应该提到GetWindowText 应该被认为是极其危险的,因为它可以对你的线程做坏事,包括挂起它,这不是你自己的过错。 在实践中它不会发生,但这是你应该知道的。

    【讨论】:

      猜你喜欢
      • 2011-07-29
      • 1970-01-01
      • 2016-07-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多