Entwickler-Ecke

Windows API - EnumWindows falsch benutzt?


5M17H - Mo 02.07.07 19:07
Titel: EnumWindows falsch benutzt?

EnumWindows(@TProgramme.ProgrammnamenAusgeben,0);
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
function TProgramme.ProgrammnamenAusgeben(Wnd: THandle;  LParam: Integer): Boolean;
var Laenge : Integer;
    Text : String;
    rueck: boolean;
begin
  Rueck := true;
  laenge := GetWindowTextLength(Wnd);
  SetLength(Text, laenge);
  GetWindowText(Wnd, PChar(Text), laenge+1);
  if trim(Text) <> '' then
    form1.memo2.lines.add(text);
  result := rueck;
end;

Wieso ist 'wnd' immer der gleiche wert? Benutze ich EnumWindows falsch oder was?


Moderiert von user profile iconChristian S.: Topic aus Sonstiges (Delphi) verschoben am Mo 02.07.2007 um 19:08


Dezipaitor - Mo 02.07.07 19:42

Soweit ich weiß, darfst du keine Methode verwenden, sondern musst eine normale Funktion verwenden, die zudem noch stdcall am Ende stehen hat.
Über LPARAM kannst du ja den Instanzpointer übergeben.


5M17H - Mo 02.07.07 20:33

Äh entschuldigung.
Aber ich habe von deinem Post sowenig wie 1 wort verstanden. function. Kannst du bitte etwas 'unprofesioneller' reden damit ichs verstehe :oops: :lol: 8)


Chryzler - Mo 02.07.07 20:48

user profile icon5M17H hat folgendes geschrieben:
Äh entschuldigung.
Aber ich habe von deinem Post sowenig wie 1 wort verstanden. function. Kannst du bitte etwas 'unprofesioneller' reden damit ichs verstehe :oops: :lol: 8)

So in etwa:

Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
function ProgrammnamenAusgeben(Wnd: THandle;  LParam: Integer): Boolean; stdcall;
var Laenge : Integer;
    Text : String;
    rueck: boolean;
begin
  Rueck := true;
  laenge := GetWindowTextLength(Wnd);
  SetLength(Text, laenge);
  GetWindowText(Wnd, PChar(Text), laenge+1);
  if trim(Text) <> '' then
    form1.memo2.lines.add(text);
  result := rueck;
end;


Delete - Mo 02.07.07 22:23

Zur Erklärung: methoden habe imme rnoch den unsichtabren Self-Paramter. Somit würden bei der Callback Funktion als Methode die Paramter nicht mehr stimmen, da der Self-Parameter noch dazu kommt.


5M17H - Mo 02.07.07 22:32

Jungs ihr seid die größten.... DANKE