下面的程序可以判断任务栏是否是自动隐藏,不知对你是否有启发!
Private Type RECT
        Left As Long
        Top As Long
        Right As Long
        Bottom As Long
End TypePrivate Type APPBARDATA
        cbSize As Long
        hwnd As Long
        uCallbackMessage As Long
        uEdge As Long
        rc As RECT
        lParam As Long
End TypePrivate Declare Function SHAppBarMessage Lib "shell32.dll" _
        (ByVal dwMessage As Long, pData As APPBARDATA) As LongConst ABM_GETSTATE = &H4
Const ABS_ALWAYSONTOP = &H2
Const ABS_AUTOHIDE = &H1Private Sub Command1_Click()
    Dim x As APPBARDATA
    Dim l As Long
    
    x.hwnd = 0
    x.cbSize = Len(x)
    l = SHAppBarMessage(ABM_GETSTATE, x)
    If l And 1 Then
        Debug.Print "自动隐藏"
    Else
        Debug.Print "没有自动隐藏"
    End If
End Sub

解决方案 »

  1.   

    下面的程序可以隐藏/显示任务栏,不妨一试
    Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long
    Private Declare Function SetWindowPos Lib "user32" (ByVal hwnd As Long, ByVal hWndInsertAfter As Long, ByVal x As Long, ByVal y As Long, ByVal cx As Long, ByVal cy As Long, ByVal wFlags As Long) As LongPrivate Const SWP_HIDEWINDOW = &H80
    Private Const SWP_SHOWWINDOW = &H40'隐藏任务栏
    rtn = FindWindow("Shell_traywnd", "")
    SetWindowPos rtn, 0, 0, 0, 0, 0, SWP_HIDEWINDOW
    '显示任务栏
    rtn = FindWindow("Shell_traywnd", "")
    SetWindowPos rtn, 0, 0, 0, 0, 0, SWP_SHOWWINDOW
      

  2.   

    先用SHAppBarMessage中的ABM_GETSTATE获得有没有自动隐藏,如果没有自动隐藏然后用ABM_SETAUTOHIDEBAR。
    try it。
      

  3.   

    ABM_SETAUTOHIDEBAR怎么用有谁知道?
      

  4.   

    我估计可能要改注册表,因为通过SHAppBarMessage发送ABM_SETAUTOHIDEBAR只是让系统
    能够在用户光标离开工具栏后发送一个消息到工具栏消息处理函数,然后在消息处理函数
    中处理任务栏的隐藏。可能我说的不对,因为我使用了ABM_SETAUTOHIDEBAR消息,返回的
    结果也是正确的,但是任务栏并没有自动隐藏。