2012-07-18 20 views
5

Używam Windows Automation do testowania mojego interfejsu użytkownika oraz do otwierania i zamykania procesów. Chcę mieć poprawne WindowHandle, ale Process.WaitForInputIdle() nie czekać wystarczająco długo. Mam pracę, ale nie rozumiem, dlaczego funkcja WaitForInputIdle() nie działa.Dlaczego funkcja Process.WaitForInputIdle() nie działa?

Poniżej znajduje się mały wycinek kodu:

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

Wydaje się podobne do zadanego pytania [tutaj] (http://stackoverflow.com/questions/3247125/wait-for-wpf-app-to-load-after-starting-w-process-start). Może być konieczne wywołanie metody Process.Refresh() w pewnym momencie. – Chaser324

Odpowiedz

2

Jak stwierdził Chaser324 w jego komentarz, odpowiedź na moje pytanie można znaleźć here.

Po prostu potrzebuję dodać wywołanie Process.Refresh() wewnątrz mojej pętli "while".

Powiązane problemy