AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Anstatt ID den Namen verwenden?

Ein Thema von Mirco · begonnen am 27. Jun 2006 · letzter Beitrag vom 30. Jul 2006
Antwort Antwort
Seite 1 von 3  1 23      
Mirco

Registriert seit: 6. Mai 2006
71 Beiträge
 
#1

Anstatt ID den Namen verwenden?

  Alt 27. Jun 2006, 11:28
Hallo
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
Mirco Hallenga
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.115 Beiträge
 
Delphi 12 Athens
 
#2

Re: Anstatt ID den Namen verwenden?

  Alt 27. Jun 2006, 12:15
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 ^^
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#3

Re: Anstatt ID den Namen verwenden?

  Alt 27. Jun 2006, 12:42
Zitat von Mirco:
Aber zunächst einmal habe ich Probleme mit der ID da die sich ja immer ändert.
Die ID ändert sich nicht.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Mirco

Registriert seit: 6. Mai 2006
71 Beiträge
 
#4

Re: Anstatt ID den Namen verwenden?

  Alt 28. Jun 2006, 14:06
Hallo,
merkwürdig, ich muss mir das alles nochmal genau ansehen.
Erstmal Danke
Grüße
Mirco
Mirco Hallenga
  Mit Zitat antworten Zitat
Mirco

Registriert seit: 6. Mai 2006
71 Beiträge
 
#5

Re: Anstatt ID den Namen verwenden?

  Alt 29. Jun 2006, 10:04
@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
Miniaturansicht angehängter Grafiken
id_436.gif  
Mirco Hallenga
  Mit Zitat antworten Zitat
Mirco

Registriert seit: 6. Mai 2006
71 Beiträge
 
#6

Re: Anstatt ID den Namen verwenden?

  Alt 29. Jun 2006, 10:19
@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?


Viele Grüsse
Mirco
Mirco Hallenga
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#7

Re: Anstatt ID den Namen verwenden?

  Alt 29. Jun 2006, 11:37
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.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Mirco

Registriert seit: 6. Mai 2006
71 Beiträge
 
#8

Re: Anstatt ID den Namen verwenden?

  Alt 29. Jun 2006, 11:52
*heul*
neee es gibz 7 Comboboxen.
Gruss
Mirco
Mirco Hallenga
  Mit Zitat antworten Zitat
Christian Seehase
(Co-Admin)

Registriert seit: 29. Mai 2002
Ort: Hamburg
11.105 Beiträge
 
Delphi 11 Alexandria
 
#9

Re: Anstatt ID den Namen verwenden?

  Alt 29. Jun 2006, 11:55
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.
Tschüss Chris
Die drei Feinde des Programmierers: Sonne, Frischluft und dieses unerträgliche Gebrüll der Vögel.
Der Klügere gibt solange nach bis er der Dumme ist
  Mit Zitat antworten Zitat
Mirco

Registriert seit: 6. Mai 2006
71 Beiträge
 
#10

Re: Anstatt ID den Namen verwenden?

  Alt 29. Jun 2006, 12:11
Hallo Christian
Also anhand Position die Id rausbekommen?
Ich versteh das grad nicht so ganz.
Mirco
Mirco Hallenga
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 3  1 23      


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 18:28 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