![]() |
Wie kann ich prüfen ob die Taskbar gerade angezeigt wird?
Sowas wie
Code:
gibts wohl nicht? Oder?
if TaskBar.Visible then ...
|
Re: Wie kann ich prüfen ob die Taskbar gerade angezeigt wird
Ausserdem müsste es eh so heißen
Delphi-Quellcode:
Was hast du überhaupt vor???
if Taskbar.Visible = true {oder false} then...
|
Re: Wie kann ich prüfen ob die Taskbar gerade angezeigt wird
Zitat:
|
Re: Wie kann ich prüfen ob die Taskbar gerade angezeigt wird
Schreib es bitte nicht SO
Zitat:
außerdem ist der Programmierer faul ALSO Zitat:
Ganz nebenbei mittels SHAppBarMessage und dem Handle der SysTray (TaskBar) kann man das erfragen. |
Re: Wie kann ich prüfen ob die Taskbar gerade angezeigt wird
Zitat:
Delphi-Quellcode:
ist beides möglich.
var a : boolean;
if not a then ... //oder if a = false then ... Gruß. DANNYBOY |
Re: Wie kann ich prüfen ob die Taskbar gerade angezeigt wird
@neolithos
wie meinst du das? Kannst du bitte etwas präziser werden?
Code:
Wo im TAppBarData Objekt steht denn nun ob die sie gerade angezeigt wird oder nicht?
function IsTaskbarVisible: Boolean;
var tabd: TAppBarData; begin FillChar(tabd, SizeOf(TAppBarData), 0); tabd.cbSize := SizeOf(TAppBarData); if SHAppBarMessage(ABM_GETTASKBARPOS, Tabd) = 0 then Exit; Result := tabd. ????; end; Danke für eure Hilfe. |
Re: Wie kann ich prüfen ob die Taskbar gerade angezeigt wird
Erstmal in der MSDN steht die weißheit
Delphi-Quellcode:
abd.cbSize := SizeOf(app);
abd.rc := Rect(0, 0, 0, 0); abd.lParam := 0; abd.hWnd := FindWindow('Shell_TrayWnd', nil); // Handle auf Taskbar SHAppBarMessage(ABM_GETSTATE, abd); if (abd.lParam and ABS_AUTOHIDE) = 0 then begin // ist nicht AutoHide-Mode // Prüfung ob benutzer Sie klein gezogen hat is ja fast unsichtbar SHAppBarMessage(ABM_GETTASKBARPOS, abd); ... else // unsichtbar |
Re: Wie kann ich prüfen ob die Taskbar gerade angezeigt wird
Also bei mir funktioniert das irgendwie nicht, oder wir verstehen uns falsch ;-)
Ist das evtl. vom OS abhängig? Ich benutze WinNT4SP6 und Delphi 6. abd.lParam ist immer 0. Egal ob AutoHide eingeschaltet ist oder nicht. Aber ich will ja eigentlich auch gar nicht wissen ob AutoHide ein ist oder nicht. Ich will nur wissen ob die Taskbar sichtbar ist oder nicht. Also wenn AutoHide = False und AlwaysOnTop = True dann ist ja die Taskbar immer sichtbar. Aber bei AutoHide = False kann die Taskbar ja versteckt sein oder eben sichtbar. Je nachdem wo die Maus gerade ist. Wie finde ich das raus? |
Re: Wie kann ich prüfen ob die Taskbar gerade angezeigt wird
Reicht dir vielleicht das...
Delphi-Quellcode:
if IsWindowVisibleFindWindow('Shell_TrayWnd', nil)) then
Sichtbar else UnSichtBar |
Re: Wie kann ich prüfen ob die Taskbar gerade angezeigt wird
Das geht leider auch nicht :-(
IsWindowVisible ist immer True. Auch wenn die Taskbar gerade ausgeblendet ist. Läuft das bei dir? OS? Vielleicht noch andere Ideen? Danke für jeden Tipp. |
Re: Wie kann ich prüfen ob die Taskbar gerade angezeigt wird
Das war mir klar!
Aber ich weiß leider immer noch nicht warum du das wissen möchtest! Das könnte helfen dein Problem zu lösen... |
Re: Wie kann ich prüfen ob die Taskbar gerade angezeigt wird
Ich zeichne periodisch ein Bitmap und wandle das dann in ein Icon um welches als TrayIcon (neben der Uhr) angezeigt wird. Das muss nun aber nicht gemacht werden falls die Taskbar unsichtbar ist => Ressourcen sparen.
|
Re: Wie kann ich prüfen ob die Taskbar gerade angezeigt wird
Dann wäre es auch möglich zu prüfen in wieweit die Taskbar sichtbar ist.
Delphi-Quellcode:
Vergleiche die zwei rechtecke!
GetWindowRect(FindWindow('Shell_TrayWnd', nil), rc1);
rc2 := Rect(0, 0, GetSystemMetrics(SM_CXSCREEN), GetSystemMetrics(SM_CYSCREEN)); Beachte das die Taskbar immer ein bisschen sicht bar ist aber dein Symbol nicht. |
Re: Wie kann ich prüfen ob die Taskbar gerade angezeigt wird
Das ist zwar ein Ansatz aber auch nicht gerade einfach. Die Taskbar kann ja schliesslich an jeder Seite des Desktops platziert sein und sie kann auch unterschiedlich gross sein (auch noch abhängig vom OS). Das ergäbe eine ziemliche rechnerei, was womöglich den Aufwand der Bitmaperzeugung übersteigen würde und somit den Vorteil (Rechenzeit sparen) zunichte machen würde.
Am Besten wäre wenn Windows eine Nachricht schicken würde sobald die Taskbar aufklappt/zuklappt. Die könnte ich abfangen und ein Flag setzen. Das wäre Ressourcenschonend. Aber bis jetzt hab ich nocht nichts dergleichen gefunden. :cry: Oder gibts doch einen Event dafür? |
Re: Wie kann ich prüfen ob die Taskbar gerade angezeigt wird
Sowas ist mir nicht bekannt, aber mach die keine sorgen. Da die wenigsten nutzer an den Einstellungen der Taskbar selten auf AutoHide stellen.
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 21: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