xyl006 发表于 2008-9-20 16:34:26

系统托盘程序

在网上找到了下面的程序,但好像有点问题,无论我选择启用,还是关闭,程序都是退出,但按照下面程序的逻辑,选择启用,或关闭,应该是有对话框弹出才对,而不是退出。

请各位高手帮忙看看,应该怎样修改。


#NoTrayIcon
#Region ;**** 参数创建于 ACNWrapper_GUI ****
#AutoIt3Wrapper_outfile=C:\Users\Alan\Desktop\11.exe
#EndRegion ;**** 参数创建于 ACNWrapper_GUI ****
#include <Constants.au3>
Opt("TrayMenuMode", 1) ;没有默认的(暂停脚本和退出)菜单.
Opt("trayOnEventMode", 1) ;应用 OnEvent 函数于系统托盘.

$Start = TrayCreateItem("启用") ;创建第一个菜单项
TrayItemSetOnEvent($Start, "TrayMsg") ;注册第一个菜单项的事件(被点下)
TrayCreateItem("") ;创建一个空白的菜单项(即横斜杠分割符)
$Close = TrayCreateItem("关闭") ;创建第二个菜单项
TrayItemSetOnEvent($Close, "TrayMsg") ;注册第二个菜单项的事件(被点下)
TrayCreateItem("") ;
$Quit = TrayCreateItem("退出") ;创建第三个菜单项
TrayItemSetOnEvent($Quit, "TrayMsg") ;注册第二个菜单项的事件(被点下)

TraySetOnEvent($TRAY_EVENT_PRIMARYDOUBLE, "TrayMsg") ;注册鼠标左键双击事件(只能在 TrayOnEventMode 设置为 1 时才能使用)
TraySetOnEvent($TRAY_EVENT_SECONDARYUP, "TrayMsg") ;注册鼠标右键双击事件(只能在 TrayOnEventMode 设置为 1 时才能使用)
TraySetState()

While 1
    Sleep(5000)
WEnd

Func TrayMsg()                                    ;托盘消息执行函数
    Switch @TRAY_ID                                 ;选择产生消息的 TrayItem 或其它特殊事件(鼠标左键双击事件)
                Case $Start
                       
            ;MsgBox(48, "提示", "你点下了“启用”")
      Case $Close
      
                        ;MsgBox(48, "提示", "你点下了“关闭”")
      Case $TRAY_EVENT_PRIMARYDOUBLE
            
                        MsgBox(48, "提示", "你双击了鼠标左键")
      Case $Quit, $TRAY_EVENT_SECONDARYUP
            Exit
    EndSwitch
EndFunc   ;==>TrayMsg

liongodmien 发表于 2008-9-27 10:55:42

Tray 动作设置设置有冲突


#NoTrayIcon
#Region ;**** 参数创建于 ACNWrapper_GUI ****
#AutoIt3Wrapper_outfile=C:\Users\Alan\Desktop\11.exe
#EndRegion ;**** 参数创建于 ACNWrapper_GUI ****
#include <Constants.au3>
Opt("TrayMenuMode", 1) ;没有默认的(暂停脚本和退出)菜单.
Opt("trayOnEventMode", 1) ;应用 OnEvent 函数于系统托盘.

$Start = TrayCreateItem("启用") ;创建第一个菜单项
TrayItemSetOnEvent($Start, "TrayMsg") ;注册第一个菜单项的事件(被点下)
TrayCreateItem("") ;创建一个空白的菜单项(即横斜杠分割符)
$Close = TrayCreateItem("关闭") ;创建第二个菜单项
TrayItemSetOnEvent($Close, "TrayMsg") ;注册第二个菜单项的事件(被点下)
TrayCreateItem("") ;
$Quit = TrayCreateItem("退出") ;创建第三个菜单项
TrayItemSetOnEvent($Quit, "TrayMsg") ;注册第二个菜单项的事件(被点下)

;TraySetOnEvent($TRAY_EVENT_PRIMARYDOUBLE, "TrayMsg") ;注册鼠标左键双击事件(只能在 TrayOnEventMode 设置为 1 时才能使用)
;TraySetOnEvent($TRAY_EVENT_SECONDARYUP, "TrayMsg") ;注册鼠标右键双击事件(只能在 TrayOnEventMode 设置为 1 时才能使用)
TraySetState()

While 1
    Sleep(5000)
WEnd

Func TrayMsg()                                    ;托盘消息执行函数
    Switch @TRAY_ID                                 ;选择产生消息的 TrayItem 或其它特殊事件(鼠标左键双击事件)
                Case $Start
         MsgBox(48, "提示", "你点下了“启用”")
                  
      Case $Close
                        MsgBox(48, "提示", "你点下了“关闭”")
                       
      Case $TRAY_EVENT_PRIMARYDOUBLE
            MsgBox(48, "提示", "你双击了鼠标左键")
                       
      Case $Quit, $TRAY_EVENT_SECONDARYUP
            Exit
    EndSwitch
EndFunc   ;==>TrayMsg
页: [1]
查看完整版本: 系统托盘程序