Auslesen von Controls
-
Hey,
ich hab mal ne Frage. Ist es theoretisch möglich mit einem Programm, welches das QT Framework nutzt, irgendwie "kontakt" aufzunehmen? Also so wie durch die WinAPI. Ich möchte z.B. in einem fremden Programm (das nutzt QT) ein Textfeld auslesen / ausfüllen usw.... mir ist klar dass es nicht so einfach geht wie durch die WinAPI (dort hat ja alels ein handle), aber ist es irgendwie möglich?
danke für die Auskunft
-
- Ein Textfeld ist kein Programm.
- "Kontakt aufnehmen" ist recht komisch formuliert, klang für mich zuerst (nach Lesen des ersten Satzes) nach "Du brauchst DBus" (Inter-Prozess-Kommunikation)
- Gibts für das simple "ich häng mich an ein Event" bei Qt das Signal/Slot-Konzept, welches in der Qt-Doku (http://doc.qtsoftware.com) durch viel Text und Beispielprogramme zur Genüge erläutert wird.
-
Ein Textfeld ist kein Programm? Danke für die Erleuchtung.
Ich formuliere mal meine Frage um: Ich habe ein stink normales C Programm. Ich hab noch nie was mit QT gemacht. Ich hab ein anderes Programm, welches die GUI über QT laufen hat. In diesem Programm möchte ich z.B. ein Textfeld durch mein Programm auslesen lassen. In der WinAPI geht das so: such dir das Handle zum Textfeld und schick dorthin ne WM_GETTEXT Message und hol dir das Ding.
Meine spezielle Frage nun: Wie mach ich sowas jetzt wenn das andere Prog nun QT nutzt (ich aber nicht).
Die Doku von QT sagt mir erstmal garnix, da gibts 500 Themen und sonstwas, ich kenn mich leider 0,0 damit aus. Ich will mich da jetzt auch nicht einarbeiten, wenn ich vorner nicht weiß, ob es überhaupt geht.
-
K.A. ob das mit Qt selber geht. Aber wenn du sowieso auf Windows eingeschossen bist: Qt verwendet im Hintergrund auch nur den Windows WIndow Manager, somit solltest du dir auch die Window Handles mit WIndows-Mitteln holen können.
Jedes QWidget hat eine winId, darüber solltest du auch deinen Zugriff bekommen.Aber irgendwie weiß ich nicht, was du da treiben willst. Das was du hier willst ist tatsächlich Interprozess-Kommunikations. Schau dir mal dbus an, da gibts auch nen Windows-Port (k.A. wie der funktioniert, hab zum Glück nix mit Windows zu tun...)
-
Ja, es gibt ja auch ein Windows, halt genau eins. Was intern da abläuft, kann man mit den Windows Mitteln (WinAPI) so nicht sehen, weil das Programm das Hauptfenster bei Windows anmeldet, den Rest aber Intern regelt.
Ja Interprozess Kommunikation ist das tatsächlich, ich möchte ja nur wissen, wie ich da ran gehen kann bzw. ob es überhaupt möglich ist von "außen" in das Programm reinzuschauen. Sicher, ich kann mir irgendwie den Speicher anschauen und so, aber das ist dann alles schon zu viel tüftelei... Vielleicht gibts da ja noch was bessereres...
Aber danke schonmal für das Stichwort dbus, ich schau mal was ich dazu finde.
-
Wenn das Programm, von dem du das Textfeld auslesen willst kein DBus unterstützt, dann brauchst du dir damit keine großen hoffnungen machen.
Denn zuerst muss ein Programm DBus unterstützen, bevor du überhaupt irgendwas machen kannst, und dann kannst du auch nur genau das auslesen, was vom Programm via DBus angeboten wird.