3131210 发表于 2017-5-19 07:11:08

[已解决]如何切换托盘图标的勾选状态

本帖最后由 3131210 于 2017-5-23 15:30 编辑

如何切换托盘图标的勾选状态
我想实现的是点击一次勾选,再点一次取消勾选
下面的代码不能取消勾选
#NoTrayIcon
#include <AutoItConstants.au3>
#include <MsgBoxConstants.au3>
#include <TrayConstants.au3> ; $TRAY_CHECKED 与 $TRAY_ICONSTATE_SHOW 常量定义文件.

Opt("TrayMenuMode", 3) ; 默认托盘菜单项目将不会显示, 当选定项目时也不检查. TrayMenuMode 的其它选项为 1, 2.

Example()

Func Example()
    ; 选择单选项目参数创建一个托盘项目.
    Local $ShowItem = TrayCreateItem("单选框 1", -1, -1, $TRAY_ITEM_RADIO)
    TrayCreateItem("") ; 创建分隔线.

    Local $idAbout = TrayCreateItem("关于...")
    TrayCreateItem("") ; 创建分隔线.

    Local $idExit = TrayCreateItem("退出")

    TraySetState($TRAY_ICONSTATE_SHOW) ; 显示托盘菜单.

    While 1
      Switch TrayGetMsg()
                        Case $ShowItem
                                If TrayItemGetState($ShowItem) = 65 Then
                                        TrayItemSetState($ShowItem, $TRAY_UNCHECKED)
                                EndIf
                                If TrayItemGetState($ShowItem) = 68 Then
                                        TrayItemSetState($ShowItem, $TRAY_CHECKED)
                                EndIf


            Case $idAbout ; 显示一个有关 AutoIt 版本和可执行文件安装路径的消息框.
                MsgBox($MB_SYSTEMMODAL, "", "AutoIt 托盘菜单示例." & @CRLF & @CRLF & _
                        "AutoIt 版本: " & @AutoItVersion & @CRLF & _
                        "安装路径: " & StringLeft(@AutoItExe, StringInStr(@AutoItExe, "\", 0, -1) - 1)) ; 查找完整路径的文件夹.

            Case $idExit ; 退出循环.
                                MsgBox(0,0,TrayItemGetState($ShowItem))
                ExitLoop
      EndSwitch
    WEnd
EndFunc   ;==>Example

kk_lee69 发表于 2017-5-19 09:19:58

回复 1# 3131210

加個判斷勾選後 把某個變數 設為1如果 變數是1就變 0然後不勾選

xzf680 发表于 2017-5-19 23:58:04

练习一下:

#NoTrayIcon
#include <AutoItConstants.au3>
#include <MsgBoxConstants.au3>
#include <TrayConstants.au3> ; $TRAY_CHECKED 与 $TRAY_ICONSTATE_SHOW 常量定义文件.

Opt("TrayMenuMode", 3) ; 默认托盘菜单项目将不会显示, 当选定项目时也不检查. TrayMenuMode 的其它选项为 1, 2.
$xian = 0
Example()

Func Example()
    ; 选择单选项目参数创建一个托盘项目.
    Local $ShowItem = TrayCreateItem("单选框 1", -1, -1, $TRAY_ITEM_RADIO)
    TrayCreateItem("") ; 创建分隔线.

    Local $idAbout = TrayCreateItem("关于...")
    TrayCreateItem("") ; 创建分隔线.

    Local $idExit = TrayCreateItem("退出")

    TraySetState($TRAY_ICONSTATE_SHOW) ; 显示托盘菜单.
    While 1
      Switch TrayGetMsg()
                        Case $ShowItem
                                        If $xian = 0 Then
                                                TrayItemSetState($ShowItem, $TRAY_CHECKED)
                                                $xian = 1
                                        Else
                                                TrayItemSetState($ShowItem, $TRAY_UNCHECKED)
                                                $xian = 0
                                        EndIf


            Case $idAbout ; 显示一个有关 AutoIt 版本和可执行文件安装路径的消息框.
                MsgBox($MB_SYSTEMMODAL, "", "AutoIt 托盘菜单示例." & @CRLF & @CRLF & _
                        "AutoIt 版本: " & @AutoItVersion & @CRLF & _
                        "安装路径: " & StringLeft(@AutoItExe, StringInStr(@AutoItExe, "\", 0, -1) - 1)) ; 查找完整路径的文件夹.

            Case $idExit ; 退出循环.
                              MsgBox(0,0,TrayItemGetState($ShowItem))
                ExitLoop
      EndSwitch
    WEnd
EndFunc   ;==>Example

veve 发表于 2017-5-20 20:18:20

难道是我的AU3 版本过时了怎么没有
#include <AutoItConstants.au3>
#include <MsgBoxConstants.au3>
#include <TrayConstants.au3>

xzf680 发表于 2017-5-21 00:07:31

回复 4# veve


    你什么版本?
页: [1]
查看完整版本: [已解决]如何切换托盘图标的勾选状态