Ändere es mal so ab:
function {TMainForm.}GetWindows(const hWnd : Longword; Param: PMyEnumParam): LongBool; stdcall;
Also
TMainForm. rausnehmen.
Zitat von
Innos:
@bitsetter jo mit GetWindowText() komm ich klar^^ nur ich will ALLE WIndowNames die es zu einer bestimmten klasse gibt
Warum alle, würde doch
IMHO ausreichen die Fenster von deiner Zielanwendung durchzugehen.
Naja wird schon seinen Grund haben.
EDIT: Code ein bisschen umgebaut, die Namen der Fenster die mit dem Klassennamen übereinstimmen, werden in eine Listbox hinzugefügt.
Delphi-Quellcode:
function EnumClassName(hWnd: THandle; Lbx: TListbox): Boolean; stdcall;
var
Len : Longint;
S : AnsiString;
ClName: array[0..60]of char;
begin
Result := True;
if IsWindowVisible(hWnd) then
begin
windows.GetClassName(hWnd, ClName, SizeOf(ClName));
if ClName = '#32770' then
begin
Len := SendMessage(hWnd, WM_GETTEXTLENGTH, 0, 0);
if Len > 0 then
begin
SetLength(S, Len);
SendMessage(hWnd, WM_GETTEXT, Len + 1, DWord(Pchar(S)));
Lbx.Items.Add(S);
end;
end;
end;
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
EnumWindows(@EnumClassName, DWord(ListBox1));
end;