タスクバーの自動的に隠すを取得・設定 |
タスクバーの自動的に隠す・手前に表示を取得及び設定 (198) | |
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 |
|
掲示板で話題になった時(ログNo.248(02.08.28)〜No.320)に皆さんと一緒に試していたコードを サンプルにしました。取得は他のOSでも出来ますが、設定は残念ながらWindowsXP だけのよう です。多分、shell32.dll のバージョンの関係かと思われます。 shell32.dll のバージョン WindowsXP = 6.0.2600 Windows2000 = 5.00.3502.4718 WindowsXP 以外で実現できる方法のサンプルは MSさん が掲示板のNo.357にUPして 下さいました。(別途No.357〜No.378も参照願います) |
2002/09/03