Hi zusammen..
Ich schlage mich gerade ein wenig mit der api rum und bringe irgendwie die funktion "EnumChildWindows" nicht richtig zum laufen!
Folgend mein code:
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21:
| type wndEnumProc = function (hWnd: HWND; lParam: LPARAM): BOOL of object;
FWndEnumProc: wndEnumProc; function HcWndEnumProc(hWnd: HWND; lParam: LPARAM): BOOL;
procedure TForm1.btnEnumChildrenClick(Sender: TObject); begin FWndEnumProc := HcWndEnumProc; EnumChildWindows(Handle, TFNWndEnumProc(@FWndEnumProc), LPARAM(LPCTSTR('test'))); end;
function HcWndEnumProc(hWnd: HWND; lParam: LPARAM): BOOL; var wndClass: String; begin SetLength(wndClass, 50); SetLength(wndClass, GetClassName(hWnd, PChar(wndClass), Length(wndClass))); Showmessage(wndClass+' '+LPCTSTR(lParam)); Result := True; end; |
Für jedes untergeordnete Fenster des Form1 sollte die Callback funktion "HcWndEnumProc" aufgerufen werden.. was auch funktioniert! Trotzdem muss ich beim Aufrufen der funktion "EnumChildWindows" irgend einen Fehler gemacht haben, denn beide Parameter (hWnd und lParam) beinhelten werte, die nicht stimmen können! Auch wenn ich innerhalb der funktion "HcWndEnumProc" auf andere Variablen (z B. auf das Handle des Formulars) zugreife, stimmen diese Werte nicht! Kann evtl. jemand nachvollziehen, welchen fehler ich gemacht habe? Ich bin im Moment leider ziehmlich ratlos
Vielen Dank für eure Bemühungen und Grüsse... Dominic