Seite 1 von 1

Windows-Taskbar

BeitragVerfasst: 01. Apr 2015, 14:14
von RalphHoffmann
Hallo :-)
ich komme mit Google nicht weiter....finde keine (für mich) verständliche Erklärung zu folgendem Code :evil: Vielleicht kann mir ja hier jemand helfen.
Code: Alles auswählen
' 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


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


Ich verstehe die Funktion so, dass sie WAHR ist, wenn die Taskbar ontop ist und FALSCH, wenn sie nicht ontop ist. Teste ich diese Funktion im Einzelschritt ist sie immer FALSCH. Obwohl die Taskbar per Einstellungen auf "Immer im Vordergrund" eingestellt ist....

Grüße
Ralph

ps.: der Code stammt von der Seite: http://www.vbarchiv.net/tipps/tipp_358-eigenschaften-der-windows-taskleiste.html

Re: Windows-Taskbar

BeitragVerfasst: 02. Apr 2015, 14:22
von stefan onken
hi,
evtl liegts daran

https://msdn.microsoft.com/en-us/library/windows/desktop/bb787947(v=vs.85).aspx
As of Windows 7, ABS_ALWAYSONTOP is no longer returned because the taskbar is always in that state.

Gruß
stefan

Re: Windows-Taskbar

BeitragVerfasst: 10. Apr 2015, 06:52
von RalphHoffmann
Hi Stefan,

danke für die Antwort. Das wusste ich schon...ich muss allerdings nocht mit XP (!!! ehrlich !!!) vorlieb nehmen :oops: Dass der Code nicht so funktioniert, wie ich es mir wünschte, liegt allerdings an einer anderen Sache, die mir gestern einfiel: Das Office 2003 wird per XenApp ausgeliefert.....und der Code zeigt nun mal nur die Werte der Taskbar auf dem Server an, von dem ausgeliefert wird.....

Ist schon blöd, wenn die IT eine Virtualisierung einsetzt, aber dann keine Thin Clients, sondern 'normale' Home-PC's mit lokal installierter Software. So ist Outlook lokal installiert....eine Email aus einem VBA-Projekt mailen ist also nicht :twisted:

Gruß
Ralph