Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   Delphi EnumWindows Fehler (https://www.delphipraxis.net/13102-enumwindows-fehler.html)

yoppu 11. Dez 2003 06:24


EnumWindows Fehler
 
Delphi-Quellcode:
function EnumWindowsProc(const hWnd : Longword; Param: lParam): LongBool; stdcall;
var
  Buffer: array[0..1024] of Char;
begin
  Result := True;
  GetWindowText(hWnd, Buffer, sizeof(Buffer));
  if lstrlen(Buffer) = 0 then
   begin
    exit;
   end
  else
   begin
    Form1.Memo1.Lines.Add (buffer);
   end;
end;

  {****************************************************} 

procedure TForm1.Button1Click(Sender: TObject);
var
LPARRAM : DWord;
begin
EnumWindows (@EnumWindowsProc,Integer(@LPARRAM)); ***********
end;
Wenn ich diese Zeilen aufrufe, bekomme ich immeran der gesternten Stelle die Meldung, Variable erforderlich, was will mir Delphi 5 damit sagen???
Danke!

[edit=r_kerber]Delphi-Tags gesetzt! Mfg, r_kerber[/edit]

r_kerber 11. Dez 2003 06:39

Re: EnumWindows Fehler
 
Hallo yoppu,

Nutze das nächste mal bitte die Delphi-Tags. Dann läßt sich der Quellcode besser lesen.
Zur Frage: Nimm mal das Integer weg.

yoppu 11. Dez 2003 06:41

Re: EnumWindows Fehler
 
Hab auch schon als Wert 0 eingegeben und ohne Integer, aber der Fehler ist immer der gleiche! :cry:

r_kerber 11. Dez 2003 06:45

Re: EnumWindows Fehler
 
Ich bekomme lediglich die Warnung:
Zitat:

[Warnung] Unit1.pas(48 ) : Variable 'LPARRAM' ist möglicherweise nicht initialisiert worden
Mein Code sieht so aus:
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var
  LPARRAM : DWord;
begin
  EnumWindows(@EnumWindowsProc, LPARRAM);
end;

yoppu 11. Dez 2003 06:50

Re: EnumWindows Fehler
 
Hmmm, seltsam, ich bekomme den Fehler

[Fehler] Unit1.pas(32): Variable erforderlich

wenn ich den Code so umstelle wie Du!? :roll:

[edit=r_kerber]Doppeltes Posting gelöscht! Mfg, r_kerber[/edit]

r_kerber 11. Dez 2003 07:02

Re: EnumWindows Fehler
 
Ich habe D7. Mit D5 kann ich's leider nicht testen.

yoppu 11. Dez 2003 07:09

Re: EnumWindows Fehler
 
Das dürfte aber doch keinen Unterschied machen, EnumWindows gibts ja schon länger als gestern und heute, oder?
Aber trotzdem Danke für Deine Hilfe!

MathiasSimmack 11. Dez 2003 07:30

Re: EnumWindows Fehler
 
Ich habe Delphi 5, und ich bekomme überhaupt keinen Fehler wenn ich den Code aus deinem 1. Posting 1:1 kopiere. Damit dürfte die Verwirrung wohl komplett sein. :stupid:

Luckie 11. Dez 2003 07:33

Re: EnumWindows Fehler
 
Versuch es mal so:
Delphi-Quellcode:
type
  PMyEnumParam = ^TMyEnumParam;
  TMyEnumParam = record
    lb: TListbox;
  end;

function GetWindows(const hWnd: Longword; Param: PMyEnumParam): LongBool;
  stdcall;
var
  Len: Longint;
  S: string;
begin
  Result := True;
  if not (IsWindow(hWnd) and IsWindowVisible(hWnd)) then
    Exit;
  Len := SendMessage(hWnd, WM_GETTEXTLENGTH, 0, 0);
  if Len > 0 then
  begin
    SetLength(S, Len);
    SendMessage(hWnd, WM_GETTEXT, Len + 1, Longint(Pchar(S)));
    Param.lb.Items.Add(s);
  end;
  // mit Result = False kann die Callbackfunktion vorzeitig verlassen werden
end;

procedure TForm1.Button1Click(Sender: TObject);
var
  Param: TMyEnumParam;
begin
  Param.lb := Listbox1;
  EnumWindows(@GetWindows, LPARAM(@Param));
end;

yoppu 11. Dez 2003 07:34

Re: EnumWindows Fehler
 
Hi Luckie,
hab ich auch schon versucht, immernoch der selbe Fehler!
So ein Mist! Habs gerade nen Kollegen testen lassen, der bekommt den selben Fehler!

Luckie 11. Dez 2003 07:45

Re: EnumWindows Fehler
 
Zitat:

Zitat von yoppu
Hi Luckie,
hab ich auch schon versucht, immernoch der selbe Fehler!

Das kann nicht sein. Pack mal einen Button und eine Listbox auf dein Formular und dann kopier den Code mal. Unter D6 läuft er einwandfrei.

yoppu 11. Dez 2003 07:55

Re: EnumWindows Fehler
 
Hi Luckie,

ich glaub Dir ja das der Code einwandfrei läuft, bei anderen läuft der von mir kopierte Code ja auch, nur eben nicht bei mir. Und ich versteh einfach nich wieso!? :cry:

Motzi 11. Dez 2003 08:33

Re: EnumWindows Fehler
 
Geh mal zwischen die beiden Klammern von EnumWindows und drück mal Strg+Shift+Space.. dann müsste ein Hint-Fenster mit den Parametern der Funktion kommen... was steht dort bei dir drinnen?

yoppu 11. Dez 2003 08:39

Re: EnumWindows Fehler
 
Dort steht
lpEnumFunc : Pointer;lParam : integer

stoxx 21. Dez 2003 03:31

Re: EnumWindows Fehler
 
mein Vorschlag war nix, deswegen steht hier nix mehr ;-)

Kolanse 9. Mai 2005 17:51

Re: EnumWindows Fehler
 
auch wenn´s schon etwas her ist...
ich habe das selbe problem und keine lösung gefunden :-(

Delphi-Quellcode:
procedure TForm1.Button2Click(Sender: TObject);
var
   zeiger   : Pointer;
begin
   zeiger   := @EnumWinProc;
   EnumWindows(zeiger, 0);
end
Die Fehlermeldung tritt beim zuweisen es Zeigers auf.

Kolanse 9. Mai 2005 18:38

Re: EnumWindows Fehler
 
aaaaaaaaaaaaaaaaaah!!!!!!!!!
man darf´s nicht im bereich der fensterklasse deklarieren.
und ich dachte das wären tippfehler...
Delphi-Quellcode:
...
  public
   { Public-Deklarationen }
  end;

var
  Form1: TForm1;

   function EnumWinProc(Wnd: THandle; LParam: LongInt): Bool; stdcall; export;

implementation
{$R *.DFM}
...


Alle Zeitangaben in WEZ +1. Es ist jetzt 06:44 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz