2009-07-03 4 views
1

Wir haben eine Drittanbieter-Windows-Anwendung, die wir für zu komplex für unsere Benutzer effizient zu verwenden fühlen. Die Anwendung verwaltet einen Scanner, mit dem 3000 Dokumente pro Tag gescannt werden.Abfangen modaler Dialog Popup von einer anderen Anwendung

Die Scanneranwendung kann komplett über die Tastatur gesteuert werden.

Wir schreiben daher eine einfache WinForms-Anwendung, die eine kleine Anzahl von großen Schaltflächen enthält, die und einige Win32-API-Aufrufe verwendet, um Tastatureingaben an die Scanneranwendung zu senden. Wir planen, diese WinForms-Anwendung als Vollbild anzuzeigen und an die Spitze der Z-Reihenfolge zu setzen.

Die Scanneranwendung zeigt jedoch manchmal Fehlermeldungen in modalen Dialogen an (z. B. Papierstau im Scanner usw.). Wir müssen diese Fehlermeldungen in unserer WinForms-Anwendung anzeigen.

Kann jemand eine Technik vorschlagen, mit der wir diese Fehlermeldungen erfassen und unseren Benutzern zeigen können?

Antwort

2

Nicht sicher, ob dies der effizienteste Weg ist, aber vorausgesetzt, Sie haben eine Möglichkeit, diese Fehlermeldungen zu identifizieren, können Sie eine Schleife erstellen, die alle offenen Fenster ab und zu durchsucht und nach einer solchen sucht Fehlerfenster.

Eine andere mögliche Richtung zu erforschen ist, eine DLL von dir in die andere Anwendung zu injizieren und die übertragenen Nachrichten zu beobachten. Ich kann nicht mit Sicherheit sagen, dass Sie in der Lage sind, diese Nachrichten zu identifizieren, und ich kann im Moment keine weiteren Nachforschungen anstellen, aber ich glaube, dass es möglich sein sollte. Spionieren Sie einfach die andere App aus, wenn eine solche Nachricht gepoppt wird, und identifizieren Sie die relevanten Nachrichten.

+0

Ich bin Teil Weg dorthin - da das modale Fenster immer den gleichen Titel hat, kann ich FindWindow von einem Timer verwenden, um es zu bekommen. Jetzt muss ich es modal in Bezug auf mein WinForms-Anwendungsfenster einstellen ... irgendwelche Gedanken, wie ?? –

+0

Ich bezweifle, dass das möglich ist ... aber da Sie bereits ihre GUI in Ihrem zeigen, warum lesen Sie nicht den Inhalt der Nachrichten in zeigen Sie es in Ihrem eigenen modalen Fenster? Sie verwenden wahrscheinlich dasselbe Fenster und dasselbe Textfeld, um die Fehler darzustellen. Sie müssen nur das Feld für die Fehlermeldung identifizieren, den Text erfassen und in Ihrem eigenen Fenster präsentieren. – eran

+0

Ich bin mir ziemlich sicher, dass es möglich sein sollte, das modale Fenster mit einer Kombination aus SetParent und/oder SetWindowLong zu reparieren ... –

Verwandte Themen