サンプルコード

Autoit|ウィンドウをトレイに隠す|閉じるボタンで最小化するサンプルコード

今回紹介するのは、ウィンドウをトレイに隠すコードと閉じるボタンでウィンドウを最小化するサンプルです。

このコードでは、まず「#NoTrayIcon」でトレイアイコンを非表示にしています。

トレイのイベントモードを有効にし、トレイアイコン上でマウスの左クリックが離された際に呼ばれるユーザー定義関数を定義しています。

ウィンドウを最小化した際に、タスクバーに表示したくない場合などに使用します。

サンプルコード

#NoTrayIcon
#include <GuiConstants.au3>
#include <Constants.au3>

Opt("TrayOnEventMode", 1);トレイのイベントモードを有効
Opt("TrayMenuMode", 1);トレイメニューなし


GUICreate("ウィンドウをトレイに隠す", 350, 200, -1, -1)
GUICtrlCreateLabel("ウィンドウをトレイに隠すサンプル", 0, 60, 350, 25, $SS_CENTER)
GUICtrlSetFont(-1, 10)

$Box1 = GUICtrlCreateCheckbox("閉じるボタンで最小化する", 90, 130)
GUISetState()

;トレイアイコン上でマウスの左クリックが離された際に呼ばれるユーザー定義関数を定義します。
TraySetOnEvent($TRAY_EVENT_PRIMARYUP, "TRAY_EVENT")


While 1
    $msg = GUIGetMsg()
    Select
        Case $msg = $GUI_EVENT_MINIMIZE; ウィンドウが最小化されたら
            TrayState(1)
        Case $msg = $GUI_EVENT_CLOSE
            If _IsChecked($Box1) Then; 「閉じるボタンで最小化する」にチェックが付いていれば
                TrayState(1)
            Else; 「閉じるボタンで最小化する」にチェックが付いていなければ
                Exit
            EndIf
    EndSelect
WEnd

Func TRAY_EVENT()
    TrayState(0)
EndFunc   ;==>TRAY_EVENT

Func TrayState($show)
    If $show Then
        GUISetState(@SW_HIDE); ウィンドウを隠す
        TraySetState(1) ; トレイアイコンを表示
        TraySetToolTip("ここをクリックするとウィンドウを表示します。")
    Else
        GUISetState(@SW_SHOW); ウィンドウを表示
        TraySetState(2) ; トレイアイコンを隠す
    EndIf
EndFunc   ;==>TrayState

Func _IsChecked($iControlID)
    Return BitAND(GUICtrlRead($iControlID), $GUI_CHECKED) = $GUI_CHECKED
EndFunc   ;==>_IsChecked

コードの説明

ウィンドウをトレイに隠す仕組み

ウィンドウの最小化のイベントが発生すると、GUISetState(@SW_HIDE) でウィンドウを非表示にし、TraySetState(1) でトレイにアイコンを表示します。

次にトレイアイコンで左クリックし、左クリックが離された時に GUISetState(@SW_SHOW) でウィンドウを表示し、TraySetState(2) でトレイアイコンを非表示にします。

閉じるボタンでウィンドウを最小化する仕組み

$Box1 = GUICtrlCreateCheckbox(“閉じるボタンで最小化する”, 90, 130) でチェックボックスを作成し、If _IsChecked($Box1) Then でチェックボックスがチェックされているかを判断しています。

もしもチェックされていれば、ユーザー定義関数 TrayState(1) を実行し、GUISetState(@SW_HIDE) でウィンドウを非表示にし、TraySetState(1) でトレイにアイコンを表示します。

BitAND(GUICtrlRead($iControlID), $GUI_CHECKED) = $GUI_CHECKED

BitAND(ビット演算のAND演算子)

GUICtrlRead($iControlID) でチェックの状態を返します。

チェックされていれば「1」を、チェックされていなければ「4」を返します。

変数 $GUI_CHECKED の値は「1」です。

変数 $GUI_UNCHECKED の値は「4」です。

チェックされていれば、「1」の 2進数は「0001」なので、「0001」AND「0001」=「1」という結果に。

チェックされていなければ、「4」の 2進数は「0100」なので、「0100」AND「0001」=「0」という結果になります。

コメント