Ich versuche, eine Schaltfläche mit Aufrufmuster klicken.Microsoft UI-Automatisierung: Invoke Pattern Exception
InvokePattern ipAddMPButton = (InvokePattern)aeAddMPButton.GetCurrentPattern(InvokePattern.Pattern);
try
{
ipAddMPButton .Invoke();
}
catch (System.Runtime.InteropServices.COMException e)
{
// TODO
}
Es wirft COMException und ich kann nicht herausfinden, warum?
Wenn ich diesen Code ausführen, ist die Schaltfläche tatsächlich gedrückt und die Funktionalität funktioniert gut. Aber dann hält es einfach für einige Zeit an und löst diese Ausnahme aus.
Auch, wenn es ist.Aktiv ausführen, dann warum kümmern sich nur die Ausnahme fangen und mit dem Fluss wie geht weiter .... Dies ist nur für den Fall, wo Sie nicht eine feste Lösung erhalten –
Ich habe eigentlich das gleiche Verhalten in einer Anwendung versuche ich mit UIAutomation zu manipulieren. In meinem Fall geschieht dies mit Winforms-Schaltflächen, die Winforms-Dialoge öffnen (ich glaube, dass sie Meldungsfelder sein können). Der aufrufende Thread bleibt für genau 1 Minute hängen und löst dann die Ausnahme aus "0x80040201 - Ein Ereignis konnte keinen der Abonnenten aufrufen." Ich habe diese Tasten mit dem Tool Inspect.exe getestet und während ich die Ausnahme nicht sehen kann, zeigt es ähnliches Verhalten, nämlich friert eine Minute nach dem Aufruf von Invoke ein (obwohl der Aufruf korrekt ausgeführt wird). –
Ist es ein Standard Winforms Button oder ist es eine spezielle Sache? Haben Sie einen Reproduktionscode? 0x80040201 ist UIA_E_ELEMENTNOTAVAILABLE, es kann also ein Problem mit dem Rennzustand sein, wie ein Code (in der App) den Knopf zu früh zerstört, bevor alle Kommunikation zwischen Ihrer UIA App und der Ziel-App abgeschlossen ist. –