Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   Delphi Wie kann ich prüfen ob die Taskbar gerade angezeigt wird? (https://www.delphipraxis.net/8435-wie-kann-ich-pruefen-ob-die-taskbar-gerade-angezeigt-wird.html)

aMuTeX 4. Sep 2003 15:26


Wie kann ich prüfen ob die Taskbar gerade angezeigt wird?
 
Sowas wie

Code:
if TaskBar.Visible then ...
gibts wohl nicht? Oder?

Die Muhkuh 4. Sep 2003 15:36

Re: Wie kann ich prüfen ob die Taskbar gerade angezeigt wird
 
Ausserdem müsste es eh so heißen
Delphi-Quellcode:
 if Taskbar.Visible = true {oder false} then...
Was hast du überhaupt vor???

Tpercon 4. Sep 2003 15:40

Re: Wie kann ich prüfen ob die Taskbar gerade angezeigt wird
 
Zitat:

Zitat von Spider
Ausserdem müsste es eh so heißen
Delphi-Quellcode:
 if Taskbar.Visible = true {oder false} then...

Und wo ist der Unterschied zu dem Code von aMuTeX? Das = treu kann man weg lassen!!

neolithos 4. Sep 2003 15:41

Re: Wie kann ich prüfen ob die Taskbar gerade angezeigt wird
 
Schreib es bitte nicht SO

Zitat:

if Taskbar.Visible = true {oder false} then...
das erzeugt zuviel Code und ist langsam.
außerdem ist der Programmierer faul

ALSO

Zitat:

if Taskbar.Visible then...

Ganz nebenbei

mittels SHAppBarMessage und dem Handle der SysTray (TaskBar) kann man das erfragen.

Dannyboy 4. Sep 2003 15:42

Re: Wie kann ich prüfen ob die Taskbar gerade angezeigt wird
 
Zitat:

if Taskbar.Visible = true {oder false} then...

if TaskBar.Visible then ...

Beide Varianten sind möglich und in der Negation kann man auch schreiben:


Delphi-Quellcode:
var a : boolean;

if not a then ...

 //oder

if a = false then ...
ist beides möglich.

Gruß. DANNYBOY

aMuTeX 4. Sep 2003 15:57

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:
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;
Wo im TAppBarData Objekt steht denn nun ob die sie gerade angezeigt wird oder nicht?

Danke für eure Hilfe.

neolithos 4. Sep 2003 16:27

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

aMuTeX 8. Sep 2003 14:51

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?

neolithos 8. Sep 2003 15:26

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

aMuTeX 9. Sep 2003 08:54

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.


Alle Zeitangaben in WEZ +1. Es ist jetzt 12:55 Uhr.
Seite 1 von 2  1 2      

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