CodeItBetter Programming Another VB Programming Blog

How to Get Task Bar Information

Posted on January 5, 2009
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
'System & API - How to Get Task Bar Information

Option Explicit
 
Public Const ABM_NEW = &H0
Public Const ABM_REMOVE = &H1
Public Const ABM_QUERYPOS = &H2
Public Const ABM_SETPOS = &H3
Public Const ABM_GETSTATE = &H4
Public Const ABM_GETTASKBARPOS = &H5
Public Const ABM_ACTIVATE = &H6
Public Const ABM_GETAUTOHIDEBAR = &H7
Public Const ABM_SETAUTOHIDEBAR = &H8
Public Const ABM_WINDOWPOSCHANGED = &H9
Public Const ABN_STATECHANGE = &H0
Public Const ABN_POSCHANGED = &H1
Public Const ABN_FULLSCREENAPP = &H2
Public Const ABN_WINDOWARRANGE = &H3
Public Const ABS_AUTOHIDE = &H1
Public Const ABS_ALWAYSONTOP = &H2
Public Const ABE_LEFT = 0
Public Const ABE_TOP = 1
Public Const ABE_RIGHT = 2
Public Const ABE_BOTTOM = 3
Type RECT
    Left As Long
    Top As Long
    Right As Long
    Bottom As Long
End Type
Type APPBARDATA
    cbSize As Long
    hwnd As Long
    uCallbackMessage As Long
    uEdge As Long
    rc As RECT
    lParam As Long
End Type
Declare Function SHAppBarMessage Lib "shell32.dll" (ByVal dwMessage As Long, pData As APPBARDATA) As Long
 
Private Sub Command1_Click()
    Dim rc As RECT
    Dim ABD As APPBARDATA
    Dim state As Long
    Dim position As Integer
    Dim hWndAppBar As Long
    Dim msg As String
    'initialize the APPBARDATA structure
    ABD.cbSize = Len(ABD)
    'get the appbar state
    state = SHAppBarMessage(ABM_GETSTATE, ABD)
    'prepare the appropriate message based on the returned state
    Select Case state
    Case False
        msg = msg & " - Auto Hide= False, Always on Top = False." & vbCrLf
        msg = msg & " - User allows apps cover the taskbar." & vbCrLf
        msg = msg & " - The taskbar must be manually invoked with maximized apps."
    Case ABS_ALWAYSONTOP
        msg = msg & " - Always on Top = True." & vbCrLf
        msg = msg & " - User wants the taskbar on-screen at all times." & vbCrLf
        msg = msg & " - The available screen is reduced by the taskbar size."
    Case Else
        msg = msg & " - Auto Hide = True." & vbCrLf
        msg = msg & " - The taskbar appears on a mousemove." & vbCrLf
        msg = msg & " - There are taskbar(s) positioned on the "
        'see which edge has a taskbar
        For position = ABE_LEFT To ABE_BOTTOM
            ABD.uEdge = position
            hWndAppBar = SHAppBarMessage(ABM_GETAUTOHIDEBAR, ABD)
            If hWndAppBar > 0 Then
                Select Case position
                Case ABE_LEFT: msg = msg & "LEFT "
                Case ABE_TOP: msg = msg & "TOP "
                Case ABE_RIGHT: msg = msg & "RIGHT "
                Case ABE_BOTTOM: msg = msg & "BOTTOM "
                End Select
            End If
        Next
    End Select
    MsgBox msg
End Sub
Comments (0) Trackbacks (0)

No comments yet.


Leave a comment


 

No trackbacks yet.