![]() |
Fenster Listen
Hallo,
ich benutze den folgenden Code um mir in einer ListBOx alle aktiven Fenster anzeigen zu lassen... der Code ist hier aus dem Forum und müsste eig funktionieren... nur ich bekomme beim Funktionsaufru die Meldung Inkompatibble Typen 'HWND' und 'Pointer'. Kann mir da einer helfen?
Delphi-Quellcode:
function EnumWindowsProc (Wnd: HWND; LParam: LPARAM): BOOL; stdcall;
var Bezeichnung : Array[0..200] of Char; begin if (IsWindowVisible(Wnd) or IsIconic(wnd)) and ((GetWindowLong(Wnd, GWL_HWNDPARENT) = 0) or (GetWindowLong(Wnd, GWL_HWNDPARENT) = GetDesktopWindow)) and (GetWindowLong(Wnd, GWL_EXSTYLE) and WS_EX_TOOLWINDOW = 0) then begin GetWindowText(Wnd, Bezeichnung, 256); Form1.listbox1.Items.Add(Bezeichnung); end; end; procedure TForm1.aktualisieren1Click(Sender: TObject); begin ListBox1.Clear; EnumWindows(@EnumWindowsProc, 1); end; |
Re: Fenster Listen
Schau dir mal die HIlfe genauer an !!
Code:
Return Value
To continue enumeration, the callback function must return TRUE; to stop enumeration, it must return FALSE. |
Re: Fenster Listen
Wo (in welcher Zeile) bekommst du denn diese Fehlermeldung?
PS:
Delphi-Quellcode:
Length(Bezeichnung) = 210
var Bezeichnung : Array[0..200] of Char;
GetWindowText(Wnd, Bezeichnung, 256); MaxLength für GetWindowText = 256 fällt dir da was auf? |
Re: Fenster Listen
Zitat:
Delphi-Quellcode:
EnumWindows(@EnumWindowsProc, 1);
|
Re: Fenster Listen
Wo kommt denn die eins beim Funktionsaufruf her?
Guck dir das mal an: ![]() |
Re: Fenster Listen
grad getestet und ich bekomm keine Fehlermeldung :gruebel:
und wie gesagt:
Delphi-Quellcode:
@Luckie: die "1" ist doch egal ... da er LParam eh nicht verwendet
GetWindowText(Wnd, Bezeichnung, 201);
// bzw. GetWindowText(Wnd, Bezeichnung, Length(Bezeichnung)); [add]
Delphi-Quellcode:
function EnumWindowsProc (Wnd: HWND; LParam: LPARAM): BOOL; stdcall;
var Bezeichnung : Array[0..200] of Char; begin if (IsWindowVisible(Wnd) or IsIconic(wnd)) and ((GetWindowLong(Wnd, GWL_HWNDPARENT) = 0) or (GetWindowLong(Wnd, GWL_HWNDPARENT) = GetDesktopWindow)) and (GetWindowLong(Wnd, GWL_EXSTYLE) and WS_EX_TOOLWINDOW = 0) then begin GetWindowText(Wnd, Bezeichnung, Length(Bezeichnung)); TListBox(LParam).Items.Add(Bezeichnung); end; Result := True; end; procedure TForm1.aktualisieren1Click(Sender: TObject); begin ListBox1.Clear; EnumWindows(@EnumWindowsProc, LPARAM(ListBox1)); end; |
Re: Fenster Listen
Zitat:
Delphi-Quellcode:
Wie muss ich diesen abschnitt eintragen? wenn cih den einfach hinzufüge bekomm ich erst mal die meldungen:
type
PMyEnumParam = ^TMyEnumParam; TMyEnumParam = record lb: TListbox; end; -"Feld Form1.Form1 besitzt keine entsprechende Komponente. Soll d. Deklaration entfert werden?" -"Die Methode Button1Click, auf die Button1Click verweist, existiert nicht soll der Verweis entfernt werden?" bei verneinung kommen dann folgende compiler meldungen: ; oder : erwartet aber = gefunden Published-Feld 'PMyEnumParam' ist weder vom Typ class noch interface
Delphi-Quellcode:
und das gleiche mit der nächsten Zeile..
PMyEnumParam = ^TMyEnumParam;
|
Re: Fenster Listen
Zitat:
|
Re: Fenster Listen
in D7 und D2009 getestet
|
Re: Fenster Listen
Ich werde natürlich wieder ignoriert ... :hello:
|
Re: Fenster Listen
Zitat:
|
Re: Fenster Listen
-.-'
Edit: Lies dir mal bitte alle Antworten konzentriert durch ! Du wirst merken, dass a) Bezeichnung -> nicht die Größe 200 sonder 256 haben sollte = Bezeichnung: Array[Byte] of Char; b) Result muss True sein damit es weiter enumeriert ... |
Re: Fenster Listen
Okay ich habs^^
bei mir stand noch anstatt
Delphi-Quellcode:
noch
TListBox(LParam).Items.Add(Bezeichnung);
Delphi-Quellcode:
und et voila es geht^^
Form1.ListBox1.Items.Add(Bezeichnung);
Danke an Alle xD Gruß Sir K |
Re: Fenster Listen
Zitat:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 08:57 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 by Thomas Breitkreuz