chen2j 发表于 2012-10-24 21:59:55

如何让托盘既支持左键双击显示窗口又支持右键单击选择菜单?【已解决】

本帖最后由 chen2j 于 2012-10-25 08:41 编辑

RT,我写了个代码,但是这两个为什么能执行一个,但是另一个就不行了呢?
这两个选择好像是靠这个语句选择的。
Opt("TrayOnEventMode", 0)

下面是我用帮助的代码组合的,需要怎么改才能两样都支持呢?

#include <Constants.au3>
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
$Form1 = GUICreate("Form1", 623, 442, 192, 124)
GUISetState(@SW_SHOW)
Opt("TrayIconHide", 0)
Opt("TrayMenuMode", 1)
Opt("TrayOnEventMode", 0)
TraySetOnEvent($TRAY_EVENT_PRIMARYUP, "tray")
$prefsitem = TrayCreateItem("参数")
TrayCreateItem("")
$aboutitem = TrayCreateItem("关于")
TrayCreateItem("")
$exititem = TrayCreateItem("退出")
While 1
        $nMsg = GUIGetMsg()
        Switch $nMsg
                Case $GUI_EVENT_CLOSE
                        Exit
                Case $GUI_EVENT_MINIMIZE
                        GUISetState(@SW_HIDE, $Form1)
                        Opt("TrayIconHide", 0)
        EndSwitch
       
        $msg = TrayGetMsg()
        Select
                Case $msg = 0
                        ContinueLoop
                Case $msg = $prefsitem
                        MsgBox(64, "参数:", "系统版本:" & @OSVersion)
                Case $msg = $aboutitem
                        MsgBox(64, "关于:", "AutoIt3-托盘-例子.")
                Case $msg = $exititem
                        ExitLoop
        EndSelect
WEnd

Func tray()
        Opt("TrayIconHide", 1)
        GUISetState(@SW_SHOW, $Form1)
        WinActivate($Form1)
EndFunc   ;==>tray

annybaby 发表于 2012-10-24 22:39:42

回复 1# chen2j

没看你的代码,贴个以前写的
#include <ButtonConstants.au3>
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
#include <Constants.au3>

TraySetClick(8)
Opt("TrayMenuMode", 3)
Opt("trayOnEventMode", 1)
TraySetOnEvent ($TRAY_EVENT_PRIMARYDOUBLE, "_showwin" )

$GUI = GUICreate("Form1",100,100)
$Button1 = GUICtrlCreateButton("确定", 5, 40, 80, 30)
GUISetState(@SW_SHOW)
$Eas = TrayCreateItem("关于")
TrayItemSetOnEvent($Eas, "TrayMsg")
$Exit = TrayCreateItem("退出")
TrayItemSetOnEvent($Exit, "TrayMsg")
While 1 ;窗体状态控制
      $nMsg = GUIGetMsg()
      Switch $nMsg
                Case $Button1
                             MsgBox(0, "提示   " , "你点了窗体上的确定按钮",0,WinGetHandle(""))
                Case $GUI_EVENT_MINIMIZE
                        GUISetState(@SW_HIDE, $GUI)
                                               
                Case $GUI_EVENT_CLOSE
                        Exit
                       
      EndSwitch
                               
WEnd
Func TrayMsg() ;系统托盘
      Switch @TRAY_ID
                Case $Eas
                        MsgBox(64, "关于", "这里是关于的内容")
                Case $Exit
                        Exit
      EndSwitch
        EndFunc   ;==>TrayMsg
       
        Func _showwin()
                GUISetState(@SW_SHOW, $GUI)
                Return
        EndFunc

user3000 发表于 2012-10-24 22:52:30

回复 1# chen2j


    楼主又是成了成功一半的典型.
你的代码稍稍修改一二就可以了.$msg = TrayGetMsg()
                Select
                        Case $msg = $TRAY_EVENT_PRIMARYDOUBLE
                        tray()

chen2j 发表于 2012-10-25 08:40:46

回复 3# user3000

原来可以这么用呢,谢谢啦!

yufei8051 发表于 2012-11-16 11:48:02

这个也有用,记号学习。感谢提供源码!
页: [1]
查看完整版本: 如何让托盘既支持左键双击显示窗口又支持右键单击选择菜单?【已解决】