Entwickler-Ecke

Windows API - Alle "SubHandles" aus einem Programm


setec - Mo 14.07.03 20:04
Titel: Alle "SubHandles" aus einem Programm
HI, kann sein das ich nach den falschen Stichwörtern gesucht habe, aber ich hab nen Problem.


Ich interesse mich für alle "Felder" eines Programmes. Das Handle habe ich, jetzt fehlen mir nur die "Felder" Also alle edits, Buttons, labels,....

Würde mich sehr über eine Funktion (Api Routine sollte reichen, nen komplettes BEispiel wäre aber auch ok :lol: )


Gruß Jörg


Delete - Di 15.07.03 03:22

Suche in: Delphi-Forum, Delphi-Library ENUMCHILDWINDOWS.


Cruiser23 - Fr 18.07.03 09:19

http://www.swissdelphicenter.ch/de/printcode.php?id=327


Delete - Fr 18.07.03 13:05

@Cruiser:
Zitat:

Der Funktionsaufruf FindWindow liefert das Handle
(vom Typ HWND) auf das gesuchte Fenster,
dabei wird nicht nach "Kinder"-Fenstern gesucht.

Das ist der Kommentart aus dem Code von dem Link den du gepostet hast. Aber er will ja alle ChildWindows eines gegebenen Fensters.


Anonymous - Sa 19.07.03 21:12

Nachtragend:

TLabel hat kein Fenster-Handle!

Schau dir X-Spy oder mein EDA an (Link/Download auf meiner Seite).


Cruiser23 - Sa 19.07.03 21:26

Von http://www.swissdelphicenter.ch/de/printcode.php?id=327 kopiert:


Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
V) EnumChildWindows 

Syntax:} 

EnumerateChildWindows(hWnd: HWND;{a handle to a top-level window} 
                      lParam: LPARAM): {a 32-bit application-defined value} 
                      BOOL; stdcall{returns TRUE or FALSE} 


{ Description : 

 The EnumChildWindows function enumerates the child windows that belong to the 
 specified parent window by passing the handle of each child window, in turn, 
 to an application-defined callback function. 
 EnumChildWindows continues until the last child window is enumerated or 
 the callback function returns False. 

 Die EnumChildWindows Funktion zählt alle zu einem Fenster gehörenden Child-Fenster 
 auf und übergibt jeweils das Handle einer Callback Funktion. 
 EnumChildWindows endet, wenn das letzte Child-Fenster aufgezählt wurde 
 oder die Callback-Funktion False zurückgibt. 

 Here is an example that lists the controls on a TPrintDialog 
 Hier ein Beispiel, um alle Controls auf eines TPrintDialogs anzuzeigen 

}
 

function EnumProc(wnd: HWND; Lines: TStrings): BOOL; stdcall
var 
  buf, Caption: array[0..255of char; 
begin 
  Result := True; 
  GetClassName(wnd, buf, SizeOf(buf) - 1); 
  SendMessage(wnd, WM_GETTEXT, 256, Integer(@Caption)); 
  Lines.Add(Format('ID: %d, ClassName: %s, Caption: %s'
           [GetDlgCtrlID(wnd), buf, Caption])); 
end

procedure TForm1.PrintDialog1Show(Sender: TObject); 
begin 
  Memo1.Clear; 
  EnumChildWindows(printdialog1.Handle, @EnumProc, Integer(memo1.Lines)); 
end;