检查Windows应用程序是否正在运行(而不是进程)

本文关键字:进程 运行 应用程序 Windows 是否 检查 | 更新日期: 2023-09-27 17:58:29

我希望在自动测试开始时检查应用程序是否打开。我可以通过执行以下来检查进程是否正在运行

foreach (Process proc in Process.GetProcesses()) 
{
    if (proc.ProcessName.Contains(name))
    {
        return true;
    }
}

然而,我想要查找的进程在应用程序实际打开前大约一分钟启动,并准备好供测试方法使用(这是一个启动应用程序非常缓慢的过程)。上面的代码示例查看了所有运行的windows进程,但我想知道,除了查看运行的windows应用程序之外,是否有类似的方法?

检查Windows应用程序是否正在运行(而不是进程)

Process类中已经有一个方法可以用来检查带有UI的应用程序是否已完全启动:

Process.WWaitForInputIdle(int毫秒)

这将等待长达millisecondsms的消息循环变为空闲(并返回一个bool以指示成功状态)。根据您正在等待的应用程序,您可能需要等待30秒或更长时间。

可能适用于您,但请注意,根据我对某些应用程序的经验,它并不完全可靠!

Windows API文档提供了有关WaitForInputIdle()在后台调用的Windows API函数的更多详细信息。

当一个进程启动时,您可以说应用程序已经启动。您想要的是等待应用程序启动进度是否完成。

这意味着,当进程启动时,应用程序就开始启动。当应用程序启动完成时,is将为用户输入做好准备。所以我认为你们应该看看下面的问题和答案。

从程序上讲,这个应用程序如何检测程序是否准备好输入

应用程序是一个过程。如果你可以修改应用程序,在应用程序开始时你可以创建文件,最后删除它。所以你可以检查文件的存在。如果文件存在,则启动/启动应用程序。

如果您在创建主表单时需要信息,请使用:

WINFORMS表单。显示的事件。

WPF加载事件

uITestControl.Exists帮我搞定了。

此方法将返回一个布尔值,该值对应于打开的应用程序窗口的存在。这允许创建一个if语句,该语句可以在应用程序尚未打开时打开应用程序,或者在应用程序已打开时不执行任何操作。