2011-01-15 13 views
-1

Ich schreibe einige Software in C# mit Win32-Aufrufe, die nach einem Fenster nach Beschriftung sucht. Wenn das Fenster erscheint, sendet meine Software verschiedene Windows-Nachrichten, um sich wiederholende Aktivitäten zu automatisieren, die ich selbst nicht manuell durchführen möchte. Was ich gefunden habe, ist, dass die WM-Nachrichten, die gesendet werden, manchmal nicht von der Anwendung verarbeitet werden. Meine aktuelle Theorie ist, dass meine Software das Fenster entdeckt und beginnt, Windows-Nachrichten zu senden, bevor die Anwendungsnachrichtenschleife tatsächlich erstellt wird.Warte auf Nachrichtenschleife

Gibt es eine Möglichkeit zu warten, bis die Nachrichtenschleife läuft?

Antwort

1

Process.WaitForInputIdle() könnte eine Lösung sein.

veranlasst den Prozess Komponente unbestimmte Zeit für den zugehörigen Prozess zu warten, einen Leerlaufzustand einzutreten. Diese Überlastung gilt nur für Prozesse mit einer Benutzerschnittstelle und daher eine Nachrichtenschleife.

+0

WaitForInputIdle wartet nur einmal beim ersten Aufruf. Wenn Sie es später verwenden, bringt es einfach den Erfolg zurück. Ich werde es versuchen, aber ich bin mir nicht sicher, ob es den Job machen wird. – Jeremy

0

Werden die Fenstermeldungen nie verarbeitet? Werden Sie von UIPI blockiert?

+0

Keine Blockierung und nie verarbeitet. – Jeremy