Du solltest/darfst nicht auf Stack-Variablen ausserhalb der Funktion zugreifen.
Wie Christian schon vorgeschlagen hat:
Delphi-Quellcode:
type
PMyEnumCildParam = ^TMyEnumCildParam;
TMyEnumCildParam =
record
Done: Boolean;
end;
function MyEnumChildProc(Wnd: HWND; Param: PMyEnumCildParam): LongBool;
stdcall;
begin
If Wnd = Form1.Edit1.Handle
then
begin
Form1.Edit1.Text := '
Done';
Param.Done := True;
Result := False;
end
else
begin
EnumChildWindows(Wnd, @MyEnumChildProc, LPARAM(Param));
Result := True;
end;
end;
procedure TForm1.Button1Click(Sender: TObject);
var
Param: TMyEnumCildParam;
begin
Param.Done := False;
EnumChildWindows(
Handle, @MyEnumChildProc, LPARAM(@Param));
if Param.Done
then
ShowMessage('
Done')
else
ShowMessage('
Nope');
end;