返回列表 发帖

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

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

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

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

  6. Example()

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

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

  13.     Local $idExit = TrayCreateItem("退出")

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

  15.     While 1
  16.         Switch TrayGetMsg()
  17.                         Case $ShowItem
  18.                                 If TrayItemGetState($ShowItem) = 65 Then
  19.                                         TrayItemSetState($ShowItem, $TRAY_UNCHECKED)
  20.                                 EndIf
  21.                                 If TrayItemGetState($ShowItem) = 68 Then
  22.                                         TrayItemSetState($ShowItem, $TRAY_CHECKED)
  23.                                 EndIf


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

  28.             Case $idExit ; 退出循环.
  29.                                 MsgBox(0,0,TrayItemGetState($ShowItem))
  30.                 ExitLoop
  31.         EndSwitch
  32.     WEnd
  33. EndFunc   ;==>Example
复制代码
附件: 您需要登录才可以下载或查看附件。没有帐号?加入

回复 1# 3131210

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

TOP

练习一下:
  1. #NoTrayIcon

  2. #include <AutoItConstants.au3>

  3. #include <MsgBoxConstants.au3>

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

  5.  

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

  7. $xian = 0

  8. Example()

  9.  

  10. Func Example()

  11.     ; 选择单选项目参数创建一个托盘项目.

  12.     Local $ShowItem = TrayCreateItem("单选框 1", -1, -1, $TRAY_ITEM_RADIO)

  13.     TrayCreateItem("") ; 创建分隔线.

  14.  

  15.     Local $idAbout = TrayCreateItem("关于...")

  16.     TrayCreateItem("") ; 创建分隔线.

  17.  

  18.     Local $idExit = TrayCreateItem("退出")

  19.  

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

  21.     While 1

  22.         Switch TrayGetMsg()

  23.                         Case $ShowItem

  24.                                         If $xian = 0 Then

  25.                                                 TrayItemSetState($ShowItem, $TRAY_CHECKED)

  26.                                                 $xian = 1

  27.                                         Else

  28.                                                 TrayItemSetState($ShowItem, $TRAY_UNCHECKED)

  29.                                                 $xian = 0

  30.                                         EndIf

  31.  

  32.  

  33.             Case $idAbout ; 显示一个有关 AutoIt 版本和可执行文件安装路径的消息框.

  34.                 MsgBox($MB_SYSTEMMODAL, "", "AutoIt 托盘菜单示例." & @CRLF & @CRLF & _

  35.                         "AutoIt 版本: " & @AutoItVersion & @CRLF & _

  36.                         "安装路径: " & StringLeft(@AutoItExe, StringInStr(@AutoItExe, "\", 0, -1) - 1)) ; 查找完整路径的文件夹.

  37.  

  38.             Case $idExit ; 退出循环.

  39.                                 MsgBox(0,0,TrayItemGetState($ShowItem))

  40.                 ExitLoop

  41.         EndSwitch

  42.     WEnd

  43. EndFunc   ;==>Example

复制代码 高亮切换

TOP

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

TOP

回复 4# veve


    你什么版本?

TOP

返回列表