'変数の明示的な宣言を強制
Option Explicit
'指定されたウィンドウに関する情報を取得
Private Declare Function GetWindowLong Lib "user32"
Alias "GetWindowLongA" (ByVal hwnd As Long, ByVal nIndex
As Long) As Long
'拡張ウィンドウスタイルを取得
Private Const GWL_EXSTYLE = (-20)
'指定されたウィンドウの属性を変更
Private Declare Function SetWindowLong Lib "user32"
Alias "SetWindowLongA" (ByVal hwnd As Long, ByVal nIndex
As Long, ByVal dwNewLong As Long) As Long
'ウィンドウが最小化時に、トップレベルウィンドウをタスクバー上に置く
Private Const WS_EX_APPWINDOW = &H40000
'指定されたウィンドウの表示状態を設定
Private Declare Function ShowWindow Lib "user32" (ByVal
hwnd As Long, ByVal nCmdShow As Long) As Long
'ウィンドウをアクティブにして、現在の位置とサイズで表示
Private Const SW_SHOW = 5
'ウィンドウを非表示にし、他のウィンドウをアクティブにする
Private Const SW_HIDE = 0
Sub Show_In_TaskBar(ByVal hwnd As Long)
Dim WinExStyle As Long
'現在の拡張ウィンドウスタイルを取得
WinExStyle = GetWindowLong(hwnd, GWL_EXSTYLE)
Call ShowWindow(hwnd, SW_HIDE)
'現在の拡張ウィンドウスタイルに WS_EX_APPWINDOW を付加
'または現在の拡張ウィンドウスタイルから WS_EX_APPWINDOW を削除
SetWindowLong hwnd, GWL_EXSTYLE, WinExStyle Xor WS_EX_APPWINDOW
Call ShowWindow(hwnd, SW_SHOW)
End Sub
Private Sub Command1_Click()
Call Show_In_TaskBar(Me.hwnd)
End Sub
Private Sub Form_Load()
Me.Caption = "実行時にタスクバーアイコンの表示・非表示を切り替える方法"
Command1.Caption = "表示切替"
End Sub