Entwickler-Ecke

Windows API - Editfeld aus anderem Programm auslesen?


alexschultze - Mo 18.11.02 15:07
Titel: Editfeld aus anderem Programm auslesen?
hiho.

ich hab ein kleines Programm (nicht meines), das nur aus einem Button und einem Editfeld besteht. Nun möchte ich, dass mein Programm den Knopf des Programms drückt und automatisch danach den Inhalt des Editfelds in mein Programm importiert. (und das dann auch mehrfach hintereinander).

Ich hab schon mal was von Handles gehört, denke das man es damit machen muss, habe aber keinen direkten Plan davon.

Handles oder anders? Ah-läggs


alexschultze - Mo 18.11.02 15:16

ach so, damit mir keiner meckert:

(oder Lucky wieder einen Link posten muss *g*)
ich hab mal im Forum gesucht und nur
http://www.auq.de/viewtopic.php?t=3687

gefunden. Da hat Luckie im groben mal beschrieben, wie es denn geht. Aber ich kann damit nicht sehr viel anfangen.. :(


Delete - Mo 18.11.02 15:55


Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
var
  hWnd, hEdit: cardinal;
  buffer: array[0..1204] of Char;
begin
  hWnd := FindWindow(nil, 'Fenstertext');
  hEdit := GetDlgItem(hWnd, 123);  //  123 ist die ID des Edit zu finden mit WinSight
  SendMessage(hEdit, WM_GETTEXT, sizeof(buffer), Integer(@buffer));
  ShowMessage(String(buffer));
end;


alexschultze - Mi 20.11.02 12:02

dammichnochmal :(

wo find ich dieses Winsight?


Delete - Mi 20.11.02 13:52

Bei D6 ist es nicht dabei stelle ich gerade fest. Bei den Enterprise-Versionen habe ich es aber schon gesehen. Alternativ kannst du dir auch von mir das Programm "WindowInfo" runterladen. Damit kannst du sie auch rausfinden, meine ich, ... denke ich, ... glaube ich.


alexschultze - Mi 20.11.02 20:15

lol. sag doch gleich das das bei Delphi bei ist ;) (hab ENT) *g*
und ich such das wie ein wilder


alexschultze - Mi 20.11.02 20:34

*grml*

also, wie folgt:
user defined image

Was ist hier die ID? :(


alexschultze - Do 21.11.02 18:17

hiho?? ich vermute mal hEdit := GetDlgItem(hWnd, 77D10000); , aber der nimmt das nicht an, weil das Hexadezimal ist.


Delete - Do 21.11.02 18:19

$77D10000

Aber das sieht mir nicht nach der ID des Edits aus.

Allerdings hab eich noch nie mit WinSight gearbeitet. was liefert dir denn mein Tool für eien ID?


alexschultze - Do 21.11.02 20:12

'dein' Tool?


alexschultze - Do 21.11.02 20:20

ah! WinInfo!! Cooles Programm, sehr praktisch.

Problem: die ID ist im Format '0x000003E8', da nimmt er x, auch mit $ für Hexadez nicht an. Was tun?


alexschultze - Do 21.11.02 20:21

ach so, Antrag auf Verbesserung des Programms: keine Labels benutzen, sondern Edits, damit man das einfach via STR+C kopieren kann ;)


Delete - Do 21.11.02 20:24

0x000003E8 ist die C Schreibweise für $3E8 in Delphi. Das sieht übrigens schon wesentlich eher nach der ID aus. :wink:

Mein Tool? WindowInfo auf meiner Delphi-Downloadseite.


alexschultze - Do 21.11.02 20:32

ich hab es ja mit deinem Tool rausgefunden.
Desshalb der ANtrag auf Verbesserung ;)


alexschultze - Do 21.11.02 20:34

oioioioiooioi coooooooooooollll
es geht!!!!

danke


Delete - Do 21.11.02 20:41

Ach so darauf hast du dich bezogen. Na ja, die paar Zahlen kann man auch schnell abtippen.

So geht jetzt alles wie gewünscht?


alexschultze - Fr 22.11.02 23:40

;)))))