6

我正在使用 Windows 自动化来测试我的 UI 并正在打开和关闭进程。我想要一个有效的 WindowHandle,但 Process.WaitForInputIdle() 等待的时间不够长。我有一个解决方法,但不明白为什么 WaitForInputIdle() 不起作用。

下面是一个小代码片段:

Process = new Process
              {
                 StartInfo =
                 {
                     WorkingDirectory = directory,
                     FileName = EXECUTABLE_FILE_NAME
                 }
              };

Process.Start();

//Process.WaitForInputIdle() doesn't work, 
//so will use a while loop until MainWindowHandle isn't IntPtr.Zero anymore,
//or until 10 seconds have elapsed

int count = 0;

while (Process.MainWindowHandle == IntPtr.Zero && count<100)
{
    count++;
    Thread.Sleep(100);
}

AppElement = AutomationElement.FromHandle(Process.MainWindowHandle);
4

1 回答 1

2

正如 Chaser324 在他的评论中所说,我的问题的答案可以在这里找到。

我基本上需要在我的“while”循环中添加对 Process.Refresh() 的调用。

于 2012-07-31T19:31:57.820 回答