![]() |
FindWindow: Alle Handles filtern
Hallöchen,
und zwar suche ich ALLE offenen Handles mit dem Gleichen Fenstertitel! Bei VB gibt es den Parameter "NextWindow" oder so, den man mit übergben kann, dann wird das nächste Handle von dem Fenster mit den bestimmten Titel genommen. Hier mal um den Arbeitsplatz zu finden, sind aber jetzt mehrere davon offen, möchte ich jedes einzelne Handle haben. Für 2??
Delphi-Quellcode:
Wäre nett wenn mir da jemand weiterhelfen könnte
var
handles: Array[1..20] of Integer; i: IntegeR; begin For i:=1 to 20 do begin handles[i]:= 0; end; handles[1]:= FindWindow(nil, 'Arbeitsplatz'); //.. Da ich keine Hilfe für den Syntax von FindWindow gefunden habe, kann es ja sein, das "nil" falsch ist oder ertwas anderes // Eingesetzt werden kann For i:=1 to 20 do begin listbox1.Items.Add(InttoStr(handles[i])); end; |
Re: FindWindow: Alle Handles filtern
Ich denke, EnumWindows sollte Dir weiterhelfen.
|
Re: FindWindow: Alle Handles filtern
Die Hilfe zu den API-Funktionen findest du in der [msdn:f1a4d706a3="FindWindow"]MSDN[/msdn:f1a4d706a3]. Als Lösung für dein Problem würde ich FindWindowEx vorschlagen.
|
Re: FindWindow: Alle Handles filtern
Danke soweit.
Habe folgende Funktion gefunden, leider verstehe ich sie nicht. Vielleicht könnte mir jemand ein Anwendungs Beispiel zeigen :)
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
begin EnumWindows(@EnumWinProc, 0); //Fehler: Variable erforderlich end; function TForm1.EnumWinProc(Wnd: THandle; LParam: LongInt): Boolean; stdcall; var WinCaption : string; Len: integer; begin Result := True; Len := GetWindowTextLength(Wnd); SetLength(WinCaption, Len); GetWindowText(Wnd, PChar(WinCaption), Len+1); if Trim(WinCaption) <> '' then Form1.Listbox1.Items.Add(Format('%.6x : %s', [Wnd, WinCaption])); end; ![]() Viele Grüße |
Re: FindWindow: Alle Handles filtern
Du darfst nicht einfach aus Funktionen Methoden machen!
|
Re: FindWindow: Alle Handles filtern
Bei diesem Tipp muss man ja auch das Handle mit geben, ka was das soll.
Der taugt anscheinend nichts. Ich komm nicht weiter :(. Könntet ihr mir ein Beispiel Code dazu geben, wie ich das am besten um setzte? Viele Grüße und Danke im voraus |
Re: FindWindow: Alle Handles filtern
Zitat:
Delphi-Quellcode:
function EnumWinProc(Wnd: THandle; Lbx: TListBox): Boolean; stdcall;
var WinCaption : string; Len: integer; begin Result := True; Len := GetWindowTextLength(Wnd); SetLength(WinCaption, Len); GetWindowText(Wnd, PChar(WinCaption), Len + 1); if Trim(WinCaption) <> '' then Lbx.Items.Add(Format('%.6x : %s', [Wnd, WinCaption])); end; procedure TForm1.Button1Click(Sender: TObject); begin EnumWindows(@EnumWinProc, DWord(ListBox1)); end; |
Re: FindWindow: Alle Handles filtern
Hi, danke schonmal für eure Mühen.
Da immer noch der Fehler Variable erforderlich auftaucht und ich anscheinend sowas wie eine eine "Funktions-Variable" erstellen muss, frage ich mich ob das überhaubt der Richtige Weg zur Lösung meines Problems ist. Ich suche ja nicht "alle" Fenster sondern nur diese die "Arbeitsplatz" oder sonst wie heißen. In VB geht das mit: Zitat:
Weiß wer etwas, was mir alle Handles zu einen Fenstertitel liefert? |
Re: FindWindow: Alle Handles filtern
Liste der Anhänge anzeigen (Anzahl: 1)
Anbei ein Demo (code von bitsetter)
|
Re: FindWindow: Alle Handles filtern
Zitat:
Habe jetzt den Filter innerhalb des EnumWindows geändert. Sieht folgendermaßen aus und funktioniert auch Prima
Delphi-Quellcode:
Dank schön
if Trim(WinCaption) = 'Arbeitsplatz' then
Lbx.Items.Add(InttoStr(wnd)); |
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:21 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