vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#

https://www.vbarchiv.net
Rubrik: System/Windows · Sonstiges   |   VB-Versionen: VB4, VB5, VB619.10.01
Eigenschaften der Windows-Taskleiste

Bei der Größen-Einstellung Ihrer Forms sollten Sie die Windows-Taskleiste berücksichtigen, sonst gibt es böse Überraschungen.

Autor:   Dieter OtterBewertung:  Views:  29.195 
www.tools4vb.deSystem:  Win9x, WinNT, Win2k, WinXP, Win7, Win8, Win10, Win11 Beispielprojekt auf CD 

Manchmal kann es interessant sein, ein bisschen mehr über die Windows-Taskleiste zu wissen, z.B. ob diese dauerhaft angezeigt wird oder nur, wenn man sich ihr mit der Maus nähert. Vielleicht möchte man auch einfach nur die Position der Windows-Taskbar kennen, so dass man sein Formular entsprechend anzeigt, ohne dass ein Teil des Formulars hinter der Taskbar versteckt wird.

All diese Informationen liefert uns wie so oft, das Windows-API. In diesem Fall ist es die Funktion SHAppBarMessage.

' zunächst die API-Deklaration
Private Declare Function SHAppBarMessage Lib "shell32.dll" ( _
  ByVal dwMessage As Long, _
  pData As APPBARDATA) As Long
 
' und die APPBAR-Struktur
Private Type RECT
  Left      As Long
  Top       As Long
  Right     As Long
  Bottom    As Long
End Type
 
Private Type APPBARDATA
  cbSize As Long
  hWnd As Long
  uCallbackMessage As Long
  uEdge As Long
  rc As RECT
  lParam As Long
End Type
 
Public Enum tBarAlign
  tbaLinks = 0
  tbaRechts = 1
  tbaOben = 2
  tbaUnten = 3
End Enum

Prüfen, ob die Windows-Taskbar immer im Vordergrund angezeigt wird

Public Function IsTaskBarOnTop() As Boolean
  Dim AppBar As APPBARDATA
  Dim State As Long
 
  Const ABM_GETSTATE = &H4
  Const ABS_ALWAYSONTOP = &H2
 
  AppBar.cbSize = Len(AppBar)
  State = SHAppBarMessage(ABM_GETSTATE, AppBar)
 
  IsTaskBarOnTop = (State = ABS_ALWAYSONTOP)
End Function

Position der Taskbar

Public Function TaskBarAlign() As tBarAlign
  Dim AppBar As APPBARDATA
  Dim lResult As Long
  Dim tbHeight As Long
  Dim tbWidth As Long
 
  Const ABM_GETTASKBARPOS = &H5
 
  lResult = SHAppBarMessage(ABM_GETTASKBARPOS, AppBar)
 
  ' Größe der Taskbar
  With AppBar.rc
    tbHeight = .bottom - .top
    tbWidth = .right - .left
  End With
 
  ' Anhand der Größe die Position ermitteln
  If tbHeight < Screen.Height / Screen.TwipsPerPixelY Then 
    If AppBar.rc.top <= 0 Then
      TaskBarAlign = tbaOben
    Else
      TaskBarAlign = tbaUnten
    End If
  Else
    If AppBar.rc.left <= 0 Then
      TaskBarAlign = tbaLinks
    Else
      TaskBarAlign = tbaRechts
    End If
  End If
End Function

Größe der Taskbar ermitteln

' Höhe in Pixel
Public Function TaskBarHeight() As Long
  Dim AppBar As APPBARDATA
  Dim lResult As Long
  Const ABM_GETTASKBARPOS = &H5
 
  lResult = SHAppBarMessage(ABM_GETTASKBARPOS, AppBar)
 
  ' Größe der Taskbar
  With AppBar.rc
    TaskBarHeight = .bottom - .top
  End With
End Function
 
' Breite in Pixel
Public Function TaskBarWidth() As Long
  Dim AppBar As APPBARDATA
  Dim lResult As Long
  Const ABM_GETTASKBARPOS = &H5
 
  lResult = SHAppBarMessage(ABM_GETTASKBARPOS, AppBar)
 
  ' Breite der Taskbar
  With AppBar.rc
    TaskBarWidth = .right - .left
  End With
End Function



Anzeige

Kauftipp Unser Dauerbrenner!Diesen und auch alle anderen Tipps & Tricks finden Sie auch auf unserer aktuellen vb@rchiv  Vol.6
(einschl. Beispielprojekt!)

Ein absolutes Muss - Geballtes Wissen aus mehr als 8 Jahren vb@rchiv!
- nahezu alle Tipps & Tricks und Workshops mit Beispielprojekten
- Symbol-Galerie mit mehr als 3.200 Icons im modernen Look
Weitere Infos - 4 Entwickler-Vollversionen (u.a. sevFTP für .NET), Online-Update-Funktion u.v.m.
 
 
Copyright ©2000-2024 vb@rchiv Dieter OtterAlle Rechte vorbehalten.


Microsoft, Windows und Visual Basic sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein.