ウィンドウは、通常最小化をするとタスクバーに最小化されます。
Autoit では、ウィンドウをタスクトレイに最小化することが出来ます。
今回は、ウィンドウを最小化した際にタスクバーには表示せずに、タスクトレイにアイコンを表示するというコードを紹介します。
このコードは、常駐アプリを作成する際に便利なので覚えておきましょう。
サンプルコード
#include <Constants.au3>
#include <GUIConstantsEx.au3>
Opt("TrayIconHide", 1)
Opt("TrayMenuMode", 1)
Opt("TrayOnEventMode", 1)
$Form1 = GUICreate("Form1", 300, 200, -1, -1)
GUISetState(@SW_SHOW)
TraySetOnEvent($TRAY_EVENT_PRIMARYUP, "hide_in_task_tray")
While 1
$nMsg = GUIGetMsg()
Switch $nMsg
Case $GUI_EVENT_CLOSE
Exit
Case $GUI_EVENT_MINIMIZE
GUISetState(@SW_HIDE, $Form1)
Opt("TrayIconHide", 0)
EndSwitch
WEnd
Func hide_in_task_tray()
Opt("TrayIconHide", 1)
GUISetState(@SW_SHOW, $Form1)
WinActivate($Form1)
EndFunc ;==>tray
実際にプログラムを実行した動画をご覧ください。
コードの解説
Opt(“TrayIconHide”, 1); トレイアイコンを隠します。
Opt(“TrayMenuMode”, 1); トレイメニューのデフォルトメニューを表示しません。
Opt(“TrayOnEventMode”, 1); TrayOnEventモードを ON にします。
$Form1 = GUICreate(“Form1”, 300, 200, -1, -1)
GUISetState(@SW_SHOW)
TraySetOnEvent($TRAY_EVENT_PRIMARYUP, “hide_in_task_tray”)
; トレイアイコンでマウスの左クリック(第一ボタン)を離すイベントが発生した際に呼ばれるユーザー定義関数を定義します。
While 1
$nMsg = GUIGetMsg()
Switch $nMsg
Case $GUI_EVENT_CLOSE
Exit
Case $GUI_EVENT_MINIMIZE; ウィンドウを最小化したら
GUISetState(@SW_HIDE, $Form1); 指定したウィンドウを隠します。
Opt(“TrayIconHide”, 0); トレイアイコンを表示します。
EndSwitch
WEnd
Func hide_in_task_tray();トレイアイコンクリックして離したら
Opt(“TrayIconHide”, 1); トレイアイコンを隠します。
GUISetState(@SW_SHOW, $Form1); 指定したウィンドウを表示します。
WinActivate($Form1); 指定したウィンドウをアクティブにします。
EndFunc ;==>tray
コメント