AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Sonstige Fragen zu Delphi Delphi ClassName / Caption von Objekt erhalten
Thema durchsuchen
Ansicht
Themen-Optionen

ClassName / Caption von Objekt erhalten

Ein Thema von Destroyer446 · begonnen am 16. Jun 2012 · letzter Beitrag vom 19. Jun 2012
Antwort Antwort
Seite 2 von 2     12   
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.537 Beiträge
 
Delphi 11 Alexandria
 
#11

AW: ClassName / Caption von Objekt erhalten

  Alt 17. Jun 2012, 13:30
Lass Dir doch den Code zum Ermitteln des Button-Handles von WinSpy generieren. Dem schickst Du dann ein BM_CLICK (oder BN_CLICKED, ich weiß es gerade nicht genau, Code sollte im Forum zu finden sein).
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
NickelM

Registriert seit: 22. Jul 2007
Ort: Carlsberg
445 Beiträge
 
Delphi 2009 Professional
 
#12

AW: ClassName / Caption von Objekt erhalten

  Alt 17. Jun 2012, 16:28
Hier der Link zum Thread, für die faulen
http://www.delphipraxis.net/15388-wi...6-09-08-a.html
Nickel
"Lebe und denke nicht an morgen"
Zitat aus dem gleichnamigen Bollywoodfilm.
  Mit Zitat antworten Zitat
Benutzerbild von Bummi
Bummi

Registriert seit: 15. Jun 2010
Ort: Augsburg Bayern Süddeutschland
3.470 Beiträge
 
Delphi XE3 Enterprise
 
#13

AW: ClassName / Caption von Objekt erhalten

  Alt 17. Jun 2012, 18:15
das was ich hochgeladen hatte tut unter anderem genau dies....
Thomas Wassermann H₂♂
Das Problem steckt meistens zwischen den Ohren
DRY DRY KISS
H₂ (wenn bei meinen Snipplets nichts anderes angegeben ist Lizenz: WTFPL)
  Mit Zitat antworten Zitat
NickelM

Registriert seit: 22. Jul 2007
Ort: Carlsberg
445 Beiträge
 
Delphi 2009 Professional
 
#14

AW: ClassName / Caption von Objekt erhalten

  Alt 18. Jun 2012, 01:20
Gut, wenn du das Caption des Fensters schon hast, musst du das Fenster mit FindWindow suchen, dort kannst du das Caption als "Suchparameter" eingeben. Damit bekommst du das HWND, womit du weitermachen kannst.
Für den Button zufinden gibt es 2 Möglichkeiten:
- Einmal, mit FindWindowEx, falls du Klasse oder Button-Text hast. Klasse wird schwer, da man Subclassing machen kann, und somit der Button keinen "festen" Klassenname hat. Button-Text, falls du einen Button mit einem bestimmten Text drücken willst, der sich nicht ändert.
- Das zweite wäre, dass du mit EnumChildWindows, alle Child-Handles (also sozusagen "Controls") durchgehst und überprüfst, indem du dir zu jedem den Klasennamen oder Text geben lässt. Das würde dann so funktionieren:
Delphi-Quellcode:
function EnumChildProc(hHandle : HWND; lParam : Integer) : Boolean; stdcall;
begin
  //Überprüfe hier, was du brauchst. Du kannst alle Infos von diesem Child mit dem Parameter hHandle holen.
  //Wenn du das Fenster gefunden hast, gib False zurück, wenn nicht True.
end;

//Aufruf
EnumChildWindows(hParentHWND,@EnumChildProc,0); //In den letzen Parameter kannst du eine eigene Zahl, Pointer übergeben. Diesen Wert findest du in der EnumChildProc im lParam wieder. Funktioniert wie mit SendMessage.
So damit solltest du das denk ich jetzt hinbekommen. Dies ist alles aus dem Kopf geschrieben, hoffe das funkt so.

Gruß NickelM
Nickel
"Lebe und denke nicht an morgen"
Zitat aus dem gleichnamigen Bollywoodfilm.
  Mit Zitat antworten Zitat
Destroyer446

Registriert seit: 17. Jan 2011
67 Beiträge
 
#15

AW: ClassName / Caption von Objekt erhalten

  Alt 18. Jun 2012, 14:19
Ich weiß nicht was ich falsch mache, aber bei dem "EnumChildWindows" passiert bei mir einfach nichts...
Code:
Delphi-Quellcode:
function EnumChildProc(hHandle : HWND; lParam : Integer) : Boolean; stdcall;
begin
 ShowMessage('-');
end;

procedure TForm1.FormCreate(Sender: TObject);
var
 hParentHWND: HWND;
begin
 hParentHWND := FindWindow(nil, 'Fenstername');
 if hParentHWND = 0 then
 begin
  ShowMessage('Fenster nicht gefunden.');
  Application.Terminate;
 end;
 EnumChildWindows(hParentHWND, @EnumChildProc,0); //In den letzen Parameter kannst du eine eigene Zahl, Pointer übergeben. Diesen Wert findest du in der EnumChildProc im lParam wieder. Funktioniert wie mit SendMessage.
end;
Ist am Code irgendwas falsch?! ...

Mfg, Destroyer446
  Mit Zitat antworten Zitat
Benutzerbild von Bummi
Bummi

Registriert seit: 15. Jun 2010
Ort: Augsburg Bayern Süddeutschland
3.470 Beiträge
 
Delphi XE3 Enterprise
 
#16

AW: ClassName / Caption von Objekt erhalten

  Alt 18. Jun 2012, 14:48
Beispiel mit Notepad und enthaltenem Text
Delphi-Quellcode:
Function GetTextFromHandle(hwd:THandle):String;
const
  MyMaxText = 10000;
begin
  SetLength(Result, MyMaxText);
  SetLength(Result, SendMessage(hwd, WM_GETTEXT, MyMaxText, lParam(PChar(Result))));
end;

function EnumChildProc(hHandle : HWND; lParam : Integer) : Boolean; stdcall;
const
  MyMaxName = 255;
  MyMaxText = 255;
var
  ClassName: string;

begin
  Result := True;
  SetLength(ClassName, MyMaxName);
  SetLength(ClassName, GetClassName(hHandle, PChar(ClassName), MyMaxName));
  Showmessage(ClassName+' - '+GetTextFromHandle(hHandle));
end;
procedure TForm5.Button1Click(Sender: TObject);
var
 hParentHWND: HWND;
begin
 hParentHWND := FindWindow(nil,'Unbenannt - Editor');
 if hParentHWND = 0 then
 begin
  ShowMessage('Fenster nicht gefunden.');
 end else
 EnumChildWindows(hParentHWND, @EnumChildProc,0);
end;
Thomas Wassermann H₂♂
Das Problem steckt meistens zwischen den Ohren
DRY DRY KISS
H₂ (wenn bei meinen Snipplets nichts anderes angegeben ist Lizenz: WTFPL)
  Mit Zitat antworten Zitat
Destroyer446

Registriert seit: 17. Jan 2011
67 Beiträge
 
#17

AW: ClassName / Caption von Objekt erhalten

  Alt 19. Jun 2012, 08:06
Bei Notepad gibts kein Problem, nur bei dem Programm schon, aber das liegt nicht am Code.. denk ich mal...
Naja, bei dem Proggi gehts wohl nicht.

Danke,

Destroyer446
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 2     12   


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 22:21 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