Laden...

Tastatureingaben in fremden Fenster simulieren

Erstellt von schnelleHelga vor 8 Jahren Letzter Beitrag vor 8 Jahren 2.214 Views
schnelleHelga Themenstarter:in
82 Beiträge seit 2014
vor 8 Jahren
Tastatureingaben in fremden Fenster simulieren

Hallo,

Eventuell kennt sich jemand mit Tastatureingaben in fremden Fenstern aus.
Mein Problem ist folgendes:

Ich muss Daten aus einer Anwendung in eine andere übertragen. Eine passende Import-Schnittstelle gibt es nicht. Die Datenstruktur ist verschieden und direkte Schreibrechte auf der Datenbank gibt es nicht. Die Eingabe muss über die normale Erfassungsmaske erfolgen.
Es handelt sich um ca. 3000 Datensätze, die übertragen werden sollen.

Ich möchte jetzt die vorhandenen Daten aus einer Datei lesen, aufbereiten und mittels SendKey() in die andere Anwendung übertragen.

Das das ganze mit Problemen behaftet ist, wie Wartezeiten zum Speichern, Eingabefehler etc., ist mir bekannt.
Es müssen natürlich auch die Tastencodes zum Umschalten der Fenster usw. mitgeneriert werden.

Dazu meine Frage. Geht das überhaupt? Hat da schon jemand Erfahrung? Oder kennt vieleicht einen besseren Ansatz?

besten Dank für Eure Hilfe

schnelleHelga

C
2.121 Beiträge seit 2010
vor 8 Jahren

Das kann schon gehen. Wird aber einige Zeit dauern, wenn du dem System genug Zeit lassen willst um wirklich jede Eingabe sauber da hin zu bekommen wo sie hin soll.
Ich würde vorher nochmal weiter recherchieren ob es nicht doch eine andere Möglichkeit gibt.

schnelleHelga Themenstarter:in
82 Beiträge seit 2014
vor 8 Jahren

Schon mal danke,

es gibt wirklich keine "normale" Lösung. Beide sind aus der gleichen Branche, aber eben "Rivalen" und verwenden intern komplett verschiedene Datenstrukturen.
Das manuelle Eintippen dauert aber eben lange und ist natürlich auch mit Fehlern behaftet.

meine Lösung könnte ja notfalls über Nacht weiterlaufen, die Wartezeiten tun dann nicht weh.

Ich habe aber auch noch nicht mit dieser Möglichkeit experimentiert. Ich hatte auch die Variante mit kopieren und einfügen in Betracht gezogen, das geht aber auch nicht schneller und ich muss ständig zwischen den Programmen hin und her schalten.

schnelleHelga

C
2.121 Beiträge seit 2010
vor 8 Jahren

Ich habe aber auch noch nicht mit dieser Möglichkeit experimentiert.

Dann solltest du das tun. Es ist nicht schwierig, SendKeys hast du ja schon gefunden.
Durch die Eingabefelder kannst du wahrscheinlich mit TAB durchschalten. Wenn du Glück hast lässt sich das ganze Fenster mit Tab bedienen. Dann würd ich noch eine Möglichkeit suchen um immer wieder mal herauszufinden ob noch das passiert was passieren soll. Nicht dass du die ganze Anwendung schrottest.

S
6 Beiträge seit 2015
vor 8 Jahren

Die Begründer des Windows APi waren so schlau genau diesen Fall voraus zu sehen. Sofern um es sich um eine native Oberflächenwanwendung handelt sollte das mit PostMessage und SendMesage möglich sein. Darüber hinaus gibt es das DDE System und die IAccessible Schnitstelle.
(WPF User guggen wie immer in die Röhre weil sie auf diese Fire-And-Forget Technologie gesetzt haben die nicht im im mindesten so durdacht war wie Windows selbst)

simulation data can take you only so far...
"the only test for a combat vessel is combat."

schnelleHelga Themenstarter:in
82 Beiträge seit 2014
vor 8 Jahren

Danke für Eure Antworten.

@chilic
Da kann nicht viel passieren. Die Eingaben werden vom Empfänger geprüft und notfalls ein Fehler geworfen.
Dann würde die Übertragung stehenbleiben bzw. die Tasten ins Leere laufen.
Es gibt einen definierten Anfang für jeden neuen Datensatz und spezielle tastenkombinationen um innerhalb der Anwendung zu navigieren. Damit kann sichergestellt werden, dass alles dahin kommt, wo es hinsoll.

Ich werde mir mal eine rudimentäre Testumgebung basteln und sehen ob der Ansatz etwas taugt.

scnelleHelga