AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Win32/Win64 API (native code) Delphi Inhalt eines Editfelds einer Fremdanwendung auslesen? Wie?
Thema durchsuchen
Ansicht
Themen-Optionen

Inhalt eines Editfelds einer Fremdanwendung auslesen? Wie?

Ein Thema von niemandsland · begonnen am 29. Jul 2004 · letzter Beitrag vom 3. Dez 2004
 
niemandsland

Registriert seit: 29. Jul 2004
5 Beiträge
 
Delphi 6 Personal
 
#1

Inhalt eines Editfelds einer Fremdanwendung auslesen? Wie?

  Alt 29. Jul 2004, 04:56
Morgen,

ich hab da ein Problem:
ich möchte gern den Inhalt aus einem Edit (Textfeld) einer Fremdanwendung holen und es unter bestimmten Umständen auch schreiben. Um mal warm zu werden hab ich mich an einem Beispiel, den Windows Taschenrechner ("calc.exe") versucht. Das klappt ganz gut. Leider komme ich damit bei meinem Programm nicht weiter. Jetzt wollte ich mich an mein eigentliches Programm machen. Doch da fehlt mir die zündende Idee.

Vielleicht kann mir ja hier jemand helfen.

Zuerst mal ein Source

Delphi-Quellcode:
type
  TForm1 = class(TForm)
    myMemo1: TMemo;
    Button1: TButton;
    procedure Button1Click(Sender: TObject);
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

var
  Form1: TForm1;

const
  WinName = 'Pauls Commander';
  WinClass = NIL;

implementation

{$R *.dfm}

function EnumProc(StHandle: HWND; lines: TStrings): boolean; stdcall;
var
  buffer, desc: array [0..100] of char; // max. 101 Zeichen
begin
  GetClassname(StHandle, buffer, 100); // 100
  GetWindowText(StHandle, desc, 100); // 100
  lines.add(format('ID: %d, Class: %s, Text: %s',[GetDlgCtrlID(StHandle), buffer, desc]));
end;

procedure TForm1.Button1Click(Sender: TObject);
var
  hwnd:dword;
begin
  myMemo1.clear;
  hwnd := FindWindow(WinClass, WinName);
  if (hwnd = 0) then
  begin
    messagebox(0,'Programm nicht im Speicher!','Warning!',0);
    exit;
  end;
  EnumChildWindows(hwnd,@EnumProc,Integer(myMemo1.Lines));
// Handle, Functioncall, <return result>
end;
Das Beispiel funktionierte beim Windowstaschenrechner (CALC) noch ganz gut. Bei meinem zweiten Programm komme ich aber irgendwie nicht wirklich an mein Textfeld {EDIT}. Und schon gar nicht an den Inhalt dieses Feldes. Kann mir da mal jemand helfen? Ich hab zwar die einzelnen Childwindows soweit aufgelistet... Auch die drei Textfelder sind mit ID enthalten; Allerdings fehlt der Inhalt des Textfeldes.

Wäre für jede Hilfe dankbar!

Achja, nur mal so eine IDee...

Kommt man am Ende einfacher ans Ziel, wenn man sich in das Programm per Hook einklinkt? Wie mach ich das am gescheitesten? Wenn ich jetzt keinen Denkfehler habe, dann läuft die Aktion doch fast auf die gleiche Geschichte hinaus, right?

>Besten Dank im voraus für Eure Mühe!

-NimalA-
ALT + CTRL + ENTF
  Mit Zitat antworten Zitat
 


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 11:44 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz