如何让托盘既支持左键双击显示窗口又支持右键单击选择菜单?【已解决】
本帖最后由 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 回复 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 回复 1# chen2j
楼主又是成了成功一半的典型.
你的代码稍稍修改一二就可以了.$msg = TrayGetMsg()
Select
Case $msg = $TRAY_EVENT_PRIMARYDOUBLE
tray() 回复 3# user3000
原来可以这么用呢,谢谢啦! 这个也有用,记号学习。感谢提供源码!
页:
[1]