VB6.0用掲示板の過去のログ(No.1)−VBレスキュー(花ちゃん)
[記事リスト] [新規投稿] [新着記事] [ワード検索] [過去ログ] [管理用]

投稿日: 2002/08/29(Thu) 14:32
投稿者花ちゃん
Eメール
URL
タイトルRe: タスクバー「自動的に隠す」のサンプル

Option Explicit     'SampleNo=198 WindowsXP VB6.0(SP5) 2002.08.29

'タスクバーの矩形を示す RECT 構造体(P689)
Private Type RECT
    left   As Long
    top    As Long
    right  As Long
    bottom As Long
End Type

'データを格納する APPBARDATA 構造体(P689)
Private Type APPBARDATA
    cbSize As Long              '構造体のサイズ
    hWnd   As Long              'タスクバーのウインドウのハンドル
    uCallbackMessage As Long    'コールバック関数へのポインタ
    uEdge  As Long              'タスクバーの位置を示す次の定数
    rc     As RECT              'タスクバーの矩形を示す RECT 構造体
    lParam As Long              'メッセージのパラメータ
End Type

'アプリケーションバーのメッセージをシステムに送る(P687)
Private Declare Function SHAppBarMessage Lib "shell32.dll" _
    (ByVal dwMessage As Long, pData As APPBARDATA) As Long
'クラス名、又は、キャプションタイトルを与えてウインドウのハンドルを取得(P81)
Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" _
    (ByVal lpClassName As String, ByVal lpWindowName As String) As Long

Private Const ABM_GETSTATE = &H4    '自動的に隠す・常に手前に表示の状態を取得
Private Const ABM_SETSTATE = &HA    '自動で隠すに設定する(P688)
Private Const ABS_AUTOHIDE = &H1    '自動で隠す(P688)
Private Const ABS_ALWAYSONTOP = &H2 '常に手前に表示(P688)

Private Sub Command1_Click()
    Dim pData  As APPBARDATA
    Dim Ret    As Long
    Dim Flag   As Boolean
    
    With pData
        .cbSize = Len(pData)    '構造体のサイズを取得
        'タスクバーのクラス名を与えてハンドルを取得
        .hWnd = FindWindow("Shell_TrayWnd", vbNullString)
        '現在の設定状態を取得
        Ret = SHAppBarMessage(ABM_GETSTATE, pData)
        Flag = Ret And ABS_AUTOHIDE
        If Flag Then    '自動で隠すの設定の場合
            .lParam = ABS_ALWAYSONTOP   '常に手前に表示設定
        Else            '常に手前に表示設定の場合
            .lParam = ABS_AUTOHIDE      '自動で隠すの設定
        End If
    End With
    'タスクバー自動で隠す/手前に表示設定
    Ret = SHAppBarMessage(ABM_SETSTATE, pData)
    DoEvents
End Sub

WindowsXP(Home) VB6.0(SP) IE6.0
以上の設定と環境で自動で隠す/手前に表示の設定ができ動作しています。
EXE ではまだ試していませんが、このままの状態でOKで終了後も設定が有効のままです。

同じの Windows98SE VB6.0(SP5) で試すと設定が有効(できない)になりません。
サンプル中問題点等ありましたら、ご教授下さい。


- 関連一覧ツリー (★ をクリックするとツリー全体を一括表示します)

- 返信フォーム (この記事に返信する場合は下記フォームから投稿して下さい)

- Web Forum -