找回密码
 加入
搜索
查看: 6764|回复: 10

[GUI管理] [已解决]各位请教,如何使系统托盘左右击鼠标同时执行不同事件

  [复制链接]
发表于 2013-4-8 10:34:08 | 显示全部楼层 |阅读模式
本帖最后由 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)时,右击鼠标可以用,但左击鼠标无法还原窗口。

在这里向各位朋友请教,应该如何解决?
发表于 2013-4-8 10:52:01 | 显示全部楼层
回复 1# caocaofff
TraySetClick用这个去修改
 楼主| 发表于 2013-4-8 11:02:12 | 显示全部楼层
本帖最后由 caocaofff 于 2013-4-8 11:03 编辑

回复 2# Neuis


    谢谢这位朋友的回复,我试过了,TraySetClick只能对托盘菜单有用,比如左击或右击托盘时显示托盘菜单,而我现在就是想左右击鼠标分别响应不同的事件,这个该怎么做呢?即左击时还原窗口,有击时弹出托盘菜单并且可用。
发表于 2013-4-8 11:11:59 | 显示全部楼层
回复 3# caocaofff
TraySetOnEvent(-7/-8,"函数名")
;$TRAY_EVENT_PRIMARYDOWN -7 鼠标主要按键(通常左键)在托盘图标上按下.
;$TRAY_EVENT_PRIMARYUP -8 鼠标主要按键(通常左键)在托盘图标上释放(松开).
TraySetOnEvent(-9/-10,"函数名")   
$TRAY_EVENT_SECONDARYDOWN -9 鼠标次要按键(通常右键)在托盘图标上按下.
$TRAY_EVENT_SECONDARYUP -10 鼠标次要按键(通常右键)在托盘图标上释放(松开).  
根据鼠标事件来执行不同的函数
发表于 2013-4-8 11:15:53 | 显示全部楼层
我也一直有这个疑问,一同等答案
 楼主| 发表于 2013-4-8 11:20:22 | 显示全部楼层
回复 4# Neuis


    谢谢,
OnEvent 函数只能在 TrayOnEventMode 选项设置为 1 时才能使用 - 当使用这种模式, TrayGetMsg 就不能使用.

TraySetOnEvent(-7,"_show_win")有效,
TraySetOnEvent(-9,"TrayGetMsg")无效,
本人新手,大侠能否帮写个完整的代码,不胜感激...
发表于 2013-4-8 11:34:30 | 显示全部楼层
回复 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了
 楼主| 发表于 2013-4-8 11:39:09 | 显示全部楼层
回复 7# Neuis


    感激,但再麻烦大侠测试一下,右击菜单还是无效...
发表于 2013-4-8 11:41:09 | 显示全部楼层
回复 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
更正一下刚验证就发了不好意思
发表于 2013-4-8 11:41:24 | 显示全部楼层
回复 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
更正一下刚没验证就发了不好意思
 楼主| 发表于 2013-4-8 12:14:29 | 显示全部楼层
回复 10# Neuis


    这下终于解决了,再次感谢。。。
您需要登录后才可以回帖 登录 | 加入

本版积分规则

QQ|手机版|小黑屋|AUTOIT CN ( 鲁ICP备19019924号-1 )谷歌 百度

GMT+8, 2024-5-17 20:07 , Processed in 0.087748 second(s), 24 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表