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);