找回密码
 加入
搜索
查看: 5581|回复: 9

[AU3基础] 关于托盘跟随系统启动问题(图+源码) [已解决]

  [复制链接]
发表于 2010-9-5 15:19:55 | 显示全部楼层 |阅读模式
本帖最后由 yingf20 于 2010-9-5 22:01 编辑
;--------------------------程序源码是转载别人的--------------------------------------
#NoTrayIcon
#Region ;**** 参数创建于 ACNWrapper_GUI ****
#AutoIt3Wrapper_Icon=F:\Icon\16\0052.ICO
#AutoIt3Wrapper_Outfile=TrayMenu.exe
#AutoIt3Wrapper_Compression=4
#AutoIt3Wrapper_Res_Comment=托盘菜单
#AutoIt3Wrapper_Res_Description=带配置文件的托盘菜单
#AutoIt3Wrapper_Res_Fileversion=0.0.0.2
#AutoIt3Wrapper_Res_FileVersion_AutoIncrement=p
#AutoIt3Wrapper_Res_LegalCopyright=开源
#AutoIt3Wrapper_Run_Tidy=y
#EndRegion ;**** 参数创建于 ACNWrapper_GUI ****
#include <File.au3>

$iniFile = "TrayMenu.ini"
$varTrayMenuList = IniReadSection($iniFile, "TrayMenu")
$varTrayItemList = IniReadSection($iniFile, "TrayItem")
$tempFile = _TempFile()

Opt("TrayOnEventMode", 1)
Opt("TrayMenuMode", 1)
TraySetClick(16)


If @error Then
    MsgBox(4096, "", "错误, 读取INI文件失败.")
    Exit
Else
    For $i = 1 To $varTrayMenuList[0][0]
        $menu = TrayCreateMenu($varTrayMenuList[$i][1])
        For $j = 1 To $varTrayItemList[0][0]
            If ($varTrayItemList[$j][0] == $varTrayMenuList[$i][0]) Then
                $temp = StringSplit($varTrayItemList[$j][1], ";")
                $tid = TrayCreateItem($temp[1], $menu)
                TrayItemSetOnEvent($tid, "RunApp")
                IniWrite($tempFile, "MenuKey", $tid, $temp[2])
            EndIf
        Next
    Next
EndIf
$varMenuKeyList = IniReadSection($tempFile, "MenuKey")
TrayCreateItem("")
$exititem = TrayCreateItem("退出")
TrayItemSetOnEvent($exititem, "ExitFun")
TraySetState()

While 1
    Sleep(500)
WEnd
Exit

Func RunApp()
    For $k = 1 To $varMenuKeyList[0][0]
        If ($varMenuKeyList[$k][0] == @TRAY_ID) Then
            RunWait($varMenuKeyList[$k][1])
        EndIf
    Next
EndFunc   ;==>RunApp

Func ExitFun()
    Exit
EndFunc   ;==>ExitFun
;---------------------------------------------------------程序源码------------------------------------------------

;---------------------------------------------------------配置文件TrayMenu.ini------------------------------------
;[TrayMenu]
;1=工具菜单
;2=程序相关
;[TrayItem]
;1=Total Uninstall;Tools\TU\tu.exe
;1=Scite;Tools\Scite\Scite.exe
;1=MsiTools;Tools\MsiTools\MsiTools.exe
;1=百度一下;Tools\TheWorld\TheWorld.exe http://www.baidu.com
;2=程序源码;Tools\TrayMenuSrc\TheWorld.exe http://www.baidu.com
;---------------------------------------------------------配置文件TrayMenu.ini------------------------------------
我想在托盘程序菜单里加个[跟随系统启动]这项上去。应该怎写呢?

知道的帮忙一下。在此谢谢!看贴者就顶一下。
在此谢谢[水木子]版主帮忙解决!

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?加入

×

评分

参与人数 1金钱 +10 收起 理由
afan + 10 感谢主动将修改帖子分类为[已解决],请继续 ...

查看全部评分

发表于 2010-9-5 16:26:44 | 显示全部楼层
本帖最后由 水木子 于 2010-9-5 17:38 编辑
#include <ButtonConstants.au3>
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
GUICreate("Form1", 280, 250)
$Checkbox1 = GUICtrlCreateCheckbox("跟随系统启动", 80, 80, 90, 17)
GUISetState()

While 1
        $nMsg = GUIGetMsg()
        Switch $nMsg
                Case - 3
                        Exit
                Case $Checkbox1
                        If BitAND($Checkbox1, $GUI_CHECKED) Then
                                RegWrite('HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Run', @ScriptName, 'REG_SZ', '"' & @ScriptFullPath & '" /AUTO')
                                MsgBox(0, '状态:', '    已添加随系统启动!     ')
                        Else
                                RegDelete('HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Run', @ScriptName)
                                MsgBox(0, '状态:', '    已删除随系统启动!     ')
                        EndIf
        EndSwitch
WEnd

评分

参与人数 1金钱 +20 收起 理由
afan + 20

查看全部评分

发表于 2010-9-5 18:06:57 | 显示全部楼层
楼上的不错。RegWrite('HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Run', @ScriptName, 'REG_SZ', '"' & @ScriptFullPath & '" /AUTO')

主要是这个注册表文件。
发表于 2010-9-6 06:24:44 | 显示全部楼层
收藏一下!
发表于 2010-9-6 13:25:36 | 显示全部楼层
#include <Constants.au3>
Opt("TrayMenuMode", 1)
Local $sRegPath = 'HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Run'

GUICreate("Form1", 280, 250)
$Yes = TrayCreateItem("跟随系统启动")
$No = TrayCreateItem("不随系统启动")
$exit = TrayCreateItem("退出")

If RegRead($sRegPath, @ScriptName) <> '' Then
        TrayItemSetState($Yes, $TRAY_CHECKED)
Else
        TrayItemSetState($No, $TRAY_CHECKED)
EndIf
GUISetState()

While 1
        $nMsg = GUIGetMsg()
        Switch $nMsg
                Case - 3
                        Exit

        EndSwitch

        $msg = TrayGetMsg()
        Select
                Case $msg = $exit
                        Exit
                Case $msg = $Yes
                        RegWrite($sRegPath, @ScriptName, 'REG_SZ', '"' & @ScriptFullPath & '" /AUTO')
                        MsgBox(0, '状态:', '跟随系统启动')
                Case $msg = $No
                        RegDelete($sRegPath, @ScriptName)
                        MsgBox(0, '状态:', '不随系统启动')
        EndSelect
WEnd
发表于 2011-4-22 13:22:21 | 显示全部楼层
回复 1# yingf20
学习了,谢谢!
发表于 2011-4-27 21:51:46 | 显示全部楼层
本帖最后由 zhurongfei 于 2011-4-27 21:55 编辑

回复 5# 水木子


    这句  RegDelete($sRegPath, @ScriptName), 不对吧。不能删除启动项
发表于 2011-12-28 11:37:38 | 显示全部楼层
学习...................
发表于 2012-6-14 12:52:29 | 显示全部楼层
谢谢分享,做个记号
发表于 2012-10-27 17:06:46 | 显示全部楼层
正需要,学习中
您需要登录后才可以回帖 登录 | 加入

本版积分规则

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

GMT+8, 2024-11-18 13:30 , Processed in 0.103677 second(s), 29 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

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