Ideen gesucht: Daten aus anderen Anwendungen "capturen" - wie würdet ihr es machen?
-
Hallo zusammen,
ich habe eine Anwendung geschrieben, die einen systemweiten Hotkey erstellt und sich dann ins Systray verkrümelt. Ziel der Geschichte ist, dass mittels des Hotkeys die Daten des gerade fokussierten Feldes in Anwendung X gelesen werden und daraufhin eine fest definierte andere Anwendung aufgrufen wird, welche eine Datenbanksuche nach dem ausgewählten Begriff durchführt. Auf diese Weise sollen die Nutzer quasi von überall aus beispielsweise eine Kundennummer in einer Email oder in einer ganz anderen Anwendung markieren, den Hotkey drücken und dann in unserem Datenbankfrontend die Stammdaten des Kunden zu sehen bekommen.
Soweit funktioniert das ganze schon mal, also zumindest bei allen Feldern, in denen man den Text selektieren kann. Der Text wird in die automatisch in die Zwischenablage geschickt, dann ausgelesen und an das DB-Frontend geschickt.
Jetzt überlege ich, wie man auch die Daten erfassen kann, die nicht als Text selektierbar sind (also z.B. Labels oder Listeneinträge in anderen Programmen). Da die Anwendungen sehr unterschiedlich (WinForms, Java-Fenster, Webanwendungen, etc pp) und vorher nicht abzusehen sind, sollte es ein möglichst "überall" funktionierender Ansatz sein. Ich dachte bereits an etwas in dieser Art: bei Drücken des Hotkeys wird ein Screenshot gemacht und der Bereich rund um den Mauszeiger wird OCR-mäßig auf Text überprüft.
Es darf also auch gerne etwas aufwendiger sein
Bevor ich mich nun allerdings in die Arbeit stürze wollte ich mal hören, wie ihr so etwas angehen würdet? Vielleicht hat ja noch jemand die zündende Idee?Danke für eure Tipps und nen schönen Mittwoch an alle!
Grüße,
Rob
-
Rob.Dispose(); schrieb:
Jetzt überlege ich, wie man auch die Daten erfassen kann, die nicht als Text selektierbar sind (also z.B. Labels oder Listeneinträge in anderen Programmen). Da die Anwendungen sehr unterschiedlich (WinForms, Java-Fenster, Webanwendungen, etc pp) und vorher nicht abzusehen sind, sollte es ein möglichst "überall" funktionierender Ansatz sein. Ich dachte bereits an etwas in dieser Art: bei Drücken des Hotkeys wird ein Screenshot gemacht und der Bereich rund um den Mauszeiger wird OCR-mäßig auf Text überprüft.
Grundsätzlich kannst du nicht mehr erwarten, als die Pixel-Informationen auf dem Bildschirm zur Verfügung zu haben. Da nicht jedes Programm die Windows-Controls verwendet, kannst du auch nicht davon ausgehen, dass du die Datenquelle lokalisieren kannst, aus der der Text auf dem Bildschirm generiert wurde. Zumindest sollte es keinen allgemeinen Ansatz geben.