Delphi-PRAXiS
Seite 1 von 3  1 23      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   Delphi Anstatt ID den Namen verwenden? (https://www.delphipraxis.net/72223-anstatt-id-den-namen-verwenden.html)

Mirco 27. Jun 2006 11:28


Anstatt ID den Namen verwenden?
 
Hallo :-D
mit dem Beispiel kann ich ein Edit in einem anderen Programm auslesen.
Ich möchte im nächsten Schritt dann auch reinschreiben können.
Aber zunächst einmal habe ich Probleme mit der ID da die sich ja immer ändert.
Kann man stattdessen nicht auch den Editnamen verwenden?
Wenn ja, wie geht das?

Delphi-Quellcode:
procedure TForm1.Button5Click(Sender: TObject);
var
  hWnd, hEdit: cardinal;
  buffer: array[0..1204] of Char;
begin
  hWnd := FindWindow(nil, 'Fax 1.1');

 hEdit := GetDlgItem(hWnd, 788380); // 788380 ID des Edit
  SendMessage(hEdit, WM_GETTEXT, sizeof(buffer), Integer(@buffer));
  ShowMessage(String(buffer));
end;
Viele Grüsse
Mirco

himitsu 27. Jun 2006 12:15

Re: Anstatt ID den Namen verwenden?
 
Wozu erst über 'nen Namen suchen ... wie wäre es mit 'ner Konstante?

Code:
Const [color=#ff0000]MeinEdit[/color] = 788380;

procedure TForm1.Button5Click(Sender: TObject);
var
  hWnd, hEdit: cardinal;
  buffer: array[0..1204] of Char;
begin
  hWnd := FindWindow(nil, 'Fax 1.1');

  hEdit := GetDlgItem(hWnd, [color=#ff0000]MeinEdit[/color]);
  SendMessage(hEdit, WM_GETTEXT, sizeof(buffer), Integer(@buffer));
  ShowMessage(String(buffer));
end;
Vorzeile: den zu suchenden Namen kann man auch falsch schreiben, ebenfalls wie die ID.
Bei der Konstannte gibt es die ID nur einmal, also leicht zu ändern und bei Konstantennamen kann man sich nicht so einfach verschreiben, da dort meißtens der Compiler meckert ^^

Luckie 27. Jun 2006 12:42

Re: Anstatt ID den Namen verwenden?
 
Zitat:

Zitat von Mirco
Aber zunächst einmal habe ich Probleme mit der ID da die sich ja immer ändert.

Die ID ändert sich nicht.

Mirco 28. Jun 2006 14:06

Re: Anstatt ID den Namen verwenden?
 
Hallo,
merkwürdig, ich muss mir das alles nochmal genau ansehen.
Erstmal Danke
Grüße
Mirco

Mirco 29. Jun 2006 10:04

Re: Anstatt ID den Namen verwenden?
 
Liste der Anhänge anzeigen (Anzahl: 1)
@Luckie
Zitat:

Die ID ändert sich nicht.
Hmm, entweder meinst du was anderes mit der ID als ich, ich meine die Controll ID, die ändert sich bei mir bei jedem Neustart des Programms.
Überprüft mit Winspy (Thomas Stutz)
Bzw. bekomme ich den Inhalt ja nicht mehr angezeigt.

Viele Grüsse
Mirco

Mirco 29. Jun 2006 10:19

Re: Anstatt ID den Namen verwenden?
 
@Luckie,
du hast doch recht, in der Combobox steckt noch ein Edit, diese ID verändert sich nie.

@all
Nur wenn ich diese ID angebe kann ich nix mehr auslesen, warum?
Wieso ist da überhaupt ein Edit drinnen?
:wall:

Viele Grüsse
Mirco

Luckie 29. Jun 2006 11:37

Re: Anstatt ID den Namen verwenden?
 
Aha. Ja das ist ein Delphi-Programm mt der VCL geschrieben. Und die VCL vergibt keine IDs (Siehe OI, dort kan man keine vergeben), sondenr die werden zur Laufzeit aus dem Handle generiert. Und wie du siehst, sind Handle und IControlID identisch. Das Edit, was du gefundne hast ist Bestandteil der Combobox und da das Windows ist und Windows in C geschruieen wurde mit einem C Kompiler ohne VCL, hat das Edit eine feste ID, weil sie so vergeben wurde.

Du köntest aber den Klassennanemn nehmen, wenn es denn nur eine Combobox dort gibt.

Mirco 29. Jun 2006 11:52

Re: Anstatt ID den Namen verwenden?
 
*heul*
neee es gibz 7 Comboboxen.
Gruss
Mirco

Christian Seehase 29. Jun 2006 11:55

Re: Anstatt ID den Namen verwenden?
 
Moin Mirco,

dann könntest Du noch versuchen die ComboBox, zusätzlich, über MSDN-Library durchsuchenGetWindowPlacement zu identifizieren.
Die Position wird sich ja wohl nicht ändern.

Mirco 29. Jun 2006 12:11

Re: Anstatt ID den Namen verwenden?
 
Hallo Christian
Also anhand Position die Id rausbekommen?
Ich versteh das grad nicht so ganz.
Mirco


Alle Zeitangaben in WEZ +1. Es ist jetzt 18:48 Uhr.
Seite 1 von 3  1 23      

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