![]() |
Alle Fenster in der Taskleiste finden
Zu aller erst musss ich sagen ich programmiere in C#, Java und Visual Basic. Ich habe mich hier angemeldet weil hier viele kluge Leute sind und ich Delphi während der Schulzeit gelernt habe.
Mein Problem ist folgendes. Ich will alle Fenster die in der Taskleiste sichtbar sind ausfindig machen. Bisher habe ich unter der Benutzung von EnumWindows alle Fenster aufgelistet und dann mit IsWindowVisible überprüft ob sie sichtbar sind. Als nächstes überprüfe ich ob der Klientbereich größer null ist. Sofort danach überprüfe ich ob das Flag WS_EX_APPWINDOW gesetzt ist, falls ja wird das Fenster übernommen. Alle Fenster bei denen das Flag WS_EX_TOOLWINDOW gesetzt ist werden aussortiert. Leider werden immer noch Fenster gefunden die nicht in der Taskleiste sichtbar sind. Zum Teil ist das die Taskleiste selber die ich übrigens manuell aussortiere. Auch das Program Manager Fenster welches scheinbar vom Explorer.exe geöffnet wird, sortiere ich aus. Es gibt aber leider, so komisch das auch klingt, noch Fenster die zwar sichtbar sind aber nicht in der Taskleiste angezeigt werden und ich weis nicht mit welchen Trick diese Fenster sich vor der Taskleiste verstecken. Weis jemand wie ich nun diese Fenster, die sichtbar sind aber nicht in der Taskleiste angezeigt werden, ausfindig mache. Dazu gehört z.B. auch Miranda wenn es entsprechend konfiguriert ist. |
Re: Alle Fenster in der Taskleiste finden
Hi Gabro ... Herzlich Willkommen in der DP! :hi:
Ich kann dir jetzt leider keine kompetente Antwort geben. Aber ich hab ein ![]() |
Re: Alle Fenster in der Taskleiste finden
Zitat:
|
Re: Alle Fenster in der Taskleiste finden
Weis niemand wie man dieses Problem lösen könnte?
@ chaosben Dein vorgeschlagenes Programm ist sehr gut. Danke damit werde ich im schlimmsten Fall eine Lösung finden. |
Re: Alle Fenster in der Taskleiste finden
Ich hab es bisher über FindWindows(nil, nil) und GetWindow gemacht und das listet eigentlich nur die Fenster der Taskleiste auf.
|
Re: Alle Fenster in der Taskleiste finden
@SirThornberry
Das ist ja sehr interessant. Ich habe gerade nachgesehen. Das scheint keine WinApi zu sein. Es gibt nur FindWindow(). Scheinbar hat Delphi eine extra Methode dafür. Schade das ich sie nicht benutzen kann, das würde das Problem lösen. |
Re: Alle Fenster in der Taskleiste finden
GetWindow ist eine aus der Unit Windows
Delphi-Quellcode:
die Taskleiste muss hier noch gefiltert werden und Popupfenster müssen auch noch raus gefiltert werden. Dann klappts aber.
var
lHwnd : Cardinal; lClassname: Array[0..255] of Char; begin lHwnd := FindWindow(nil, nil); while (lHwnd <> 0) do begin if IsWindowVisible(lHwnd) and (GetWindow(lHwnd, GW_OWNER) = 0) then begin GetWindowText(lHwnd, @lClassName, 255); ListBox1.Items.Add(lClassName); end; lHwnd := GetWindow(lHwnd, GW_HWNDNEXT); end; end; |
Re: Alle Fenster in der Taskleiste finden
Moin Zusammen,
man könnte auch ![]() |
Re: Alle Fenster in der Taskleiste finden
Zitat:
|
Re: Alle Fenster in der Taskleiste finden
Du kannst auch weiterhin EnumWindows nehmen. Ich denke der Knackpunkt ist die Überprüfung des Owners.
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 13:46 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