[已解决]各位请教,如何使系统托盘左右击鼠标同时执行不同事件
本帖最后由 caocaofff 于 2013-4-8 12:15 编辑功能是该窗口点击最小化按钮时隐藏窗口,然后鼠标左键点击托盘还原窗口,同时鼠标右击托盘也能一直有效。
代码如下:#NoTrayIcon
#Region
#EndRegion
#include <Constants.au3>
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
#include <ButtonConstants.au3>
#include <StaticConstants.au3>
#include <IE.au3>
#include <Debug.au3>
#Region ### START Koda GUI section ### Form=
$Form1 = GUICreate("Form1", 300, 125, -1, -1)
Opt("TrayOnEventMode", 1)
Opt("TrayMenuMode", 3)
$About = TrayCreateItem("关于")
TrayCreateItem("")
$Exit = TrayCreateItem("退出")
TraySetState()
TraySetClick(16)
Global $trayMsg
GUISetState(@SW_SHOW)
TraySetOnEvent ($TRAY_EVENT_PRIMARYUP, "_show_win" )
While 1
$nMsg = GUIGetMsg()
$trayMsg = TrayGetMsg()
Switch $nMsg
Case $GUI_EVENT_CLOSE
Exit
Case $GUI_EVENT_MINIMIZE
GUISetState(@SW_HIDE, $Form1)
EndSwitch
Select
Case $trayMsg = $About
MsgBox(64, "关于", "about")
Case $trayMsg = $Exit
Exit
EndSelect
WEnd
Exit
Func _show_win()
GUISetState(@SW_SHOW,$Form1) ;显示窗口
EndFunc现在是左击鼠标有效果,右击没有效果;
当我把Opt("TrayOnEventMode", 1)改为Opt("TrayOnEventMode", 0)时,右击鼠标可以用,但左击鼠标无法还原窗口。
在这里向各位朋友请教,应该如何解决? 回复 1# caocaofff
TraySetClick用这个去修改 本帖最后由 caocaofff 于 2013-4-8 11:03 编辑
回复 2# Neuis
谢谢这位朋友的回复,我试过了,TraySetClick只能对托盘菜单有用,比如左击或右击托盘时显示托盘菜单,而我现在就是想左右击鼠标分别响应不同的事件,这个该怎么做呢?即左击时还原窗口,有击时弹出托盘菜单并且可用。 回复 3# caocaofff
TraySetOnEvent(-7/-8,"函数名")
;$TRAY_EVENT_PRIMARYDOWN -7 鼠标主要按键(通常左键)在托盘图标上按下.
;$TRAY_EVENT_PRIMARYUP -8 鼠标主要按键(通常左键)在托盘图标上释放(松开).
TraySetOnEvent(-9/-10,"函数名")
$TRAY_EVENT_SECONDARYDOWN -9 鼠标次要按键(通常右键)在托盘图标上按下.
$TRAY_EVENT_SECONDARYUP -10 鼠标次要按键(通常右键)在托盘图标上释放(松开).
根据鼠标事件来执行不同的函数 我也一直有这个疑问,一同等答案 回复 4# Neuis
谢谢,
OnEvent 函数只能在 TrayOnEventMode 选项设置为 1 时才能使用 - 当使用这种模式, TrayGetMsg 就不能使用.
TraySetOnEvent(-7,"_show_win")有效,
TraySetOnEvent(-9,"TrayGetMsg")无效,
本人新手,大侠能否帮写个完整的代码,不胜感激... 回复 6# caocaofff #NoTrayIcon
#Region
#EndRegion
#include <Constants.au3>
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
#include <ButtonConstants.au3>
#include <StaticConstants.au3>
#include <IE.au3>
#include <Debug.au3>
#Region ### START Koda GUI section ### Form=
$Form1 = GUICreate("Form1", 300, 125, -1, -1)
Opt("TrayOnEventMode", 1)
Opt("TrayMenuMode", 3)
TrayCreateItem("关于")
TraySetOnEvent (-1, "_about" )
TrayCreateItem("退出")
TraySetOnEvent (-1, "_Exit" )
TraySetState()
TraySetClick(8)
Global $trayMsg
GUISetState(@SW_SHOW)
TraySetOnEvent ($TRAY_EVENT_PRIMARYUP, "_show_win" )
While 1
$nMsg = GUIGetMsg()
$trayMsg = TrayGetMsg()
Switch $nMsg
Case $GUI_EVENT_CLOSE
Exit
Case $GUI_EVENT_MINIMIZE
GUISetState(@SW_HIDE, $Form1)
EndSwitch
WEnd
Exit
Func _show_win()
GUISetState(@SW_SHOW,$Form1) ;显示窗口
EndFunc
Func _about()
MsgBox(64, "关于", "about")
EndFunc
Func _Exit()
Exit
EndFunc这样就OK了 回复 7# Neuis
感激,但再麻烦大侠测试一下,右击菜单还是无效... 回复 6# caocaofff #NoTrayIcon
#Region
#EndRegion
#include <Constants.au3>
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
#include <ButtonConstants.au3>
#include <StaticConstants.au3>
#include <IE.au3>
#include <Debug.au3>
#Region ### START Koda GUI section ### Form=
$Form1 = GUICreate("Form1", 300, 125, -1, -1)
Opt("TrayOnEventMode", 1)
Opt("TrayMenuMode", 3)
TrayCreateItem("关于")
TrayitemSetOnEvent (-1, "_about" )
TrayCreateItem("退出")
TrayitemSetOnEvent (-1, "_Exit" )
TraySetState()
TraySetClick(8)
GUISetState(@SW_SHOW)
TraySetOnEvent ($TRAY_EVENT_PRIMARYUP, "_show_win" )
While 1
$nMsg = GUIGetMsg()
Switch $nMsg
Case $GUI_EVENT_CLOSE
Exit
Case $GUI_EVENT_MINIMIZE
GUISetState(@SW_HIDE, $Form1)
EndSwitch
WEnd
Exit
Func _show_win()
GUISetState(@SW_SHOW,$Form1) ;显示窗口
EndFunc
Func _about()
MsgBox(64, "关于", "about")
EndFunc
Func _Exit()
Exit
EndFunc更正一下刚验证就发了不好意思 回复 6# caocaofff #NoTrayIcon
#Region
#EndRegion
#include <Constants.au3>
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
#include <ButtonConstants.au3>
#include <StaticConstants.au3>
#include <IE.au3>
#include <Debug.au3>
#Region ### START Koda GUI section ### Form=
$Form1 = GUICreate("Form1", 300, 125, -1, -1)
Opt("TrayOnEventMode", 1)
Opt("TrayMenuMode", 3)
TrayCreateItem("关于")
TrayitemSetOnEvent (-1, "_about" )
TrayCreateItem("退出")
TrayitemSetOnEvent (-1, "_Exit" )
TraySetState()
TraySetClick(8)
GUISetState(@SW_SHOW)
TraySetOnEvent ($TRAY_EVENT_PRIMARYUP, "_show_win" )
While 1
$nMsg = GUIGetMsg()
Switch $nMsg
Case $GUI_EVENT_CLOSE
Exit
Case $GUI_EVENT_MINIMIZE
GUISetState(@SW_HIDE, $Form1)
EndSwitch
WEnd
Exit
Func _show_win()
GUISetState(@SW_SHOW,$Form1) ;显示窗口
EndFunc
Func _about()
MsgBox(64, "关于", "about")
EndFunc
Func _Exit()
Exit
EndFunc更正一下刚没验证就发了不好意思 回复 10# Neuis
这下终于解决了,再次感谢。。。
页:
[1]