本帖最后由 smooth 于 2023-10-30 15:19 编辑
如果点击最小化按钮时如果隐藏程序界面,托盘右键菜单无法将其弹起;如果在后面再加上一个Msgbox,则点连击鼠标左键,也无法将程序界面弹起。
为了解决这个问题,注册了一个消息函数,把Msgbox放在消息函数里,这样可以解决鼠标左键弹起的问题,但托盘右键菜单,依然无法将界面弹起。
然后我将GUISetState(@SW_HIDE, $hGui)放在消息函数里,则无法隐藏程序界面。
#NoTrayIcon
#RequireAdmin
#include <TrayConstants.au3>
TraySetClick(8) ;点击右键显示系统托盘的菜单
Global $Title = "自动***"
Global $hGui = GUICreate($Title, 410, 240) ;$WS_EX_TOOLWINDOW
GUISetBkColor(0xCCCCFF, $hGui);0x304040
Opt("TrayMenuMode", 1 + 2) ; 默认托盘菜单项目(脚本已暂停/退出脚本) (Script Paused/Exit) 将不显示.
TrayCreateItem("验证***")
TrayCreateItem("")
Global $xShouGui = TrayCreateItem("显示界面")
TrayCreateItem("")
Global $aboutitem = TrayCreateItem("关于")
TrayCreateItem("")
Global $exititem = TrayCreateItem("退出")
TraySetState(1) ;显示托盘图标
TraySetToolTip("验证***")
GUIRegisterMsg(0x0112, "WM_SYSCOMMAND")
;主循环
While 1
Switch GUIGetMsg()
Case -3
If MsgBox(1 + 32, "提示", "确定关闭程序?", "", $hGui) = 1 Then
GUIDelete($hGui)
Exit
EndIf
Case -4 ;点击最小化按钮
GUISetState(@SW_HIDE, $hGui)
;~ MsgBox(48, '提示', "将最小化到托盘(任务栏通知区域)!")
EndSwitch
Switch TrayGetMsg()
Case 0
ContinueLoop
Case $TRAY_EVENT_PRIMARYDOWN ;点击鼠标左键,显示程序界面
GUISetState(@SW_SHOW, $hGui)
Case $xShouGui
GUISetState(@SW_SHOW, $hGui)
Case $aboutitem
MsgBox(64, "关于", "自动输入****。" & @CRLF & @CRLF & "退出程序热键:Ctrl+Alt+B。" & @CRLF & @CRLF & " 2023/10/13")
Case $exititem
ExitLoop
EndSwitch
WEnd
Func WM_SYSCOMMAND($hWnd, $Msg, $wParam, $lParam)
Local $iID = BitAND($wParam, 0xFFFF)
If ($iID = 0xF020) Then
MsgBox(48, '提示', "将最小化到托盘(任务栏通知区域)!")
EndIf
EndFunc ;==>WM_SYSCOMMAND
|