找回密码
 加入
搜索
查看: 4483|回复: 11

[AU3基础] AutoIt 错误。路过的朋友帮忙一下。[已解决]

  [复制链接]
发表于 2010-9-19 13:42:56 | 显示全部楼层 |阅读模式
本帖最后由 yingf20 于 2010-9-21 12:14 编辑

如下这些代码运行一切正常,就是设置了跟随系统启动,在重起系统时就出现这个错误

感谢楼下的无私帮助,我回家试过了。
4楼说的没错,就是差这里,再次谢谢~!
 
;---------------------------------------------------------程序源码------------------------------------------------
#include <Constants.au3>
#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("")
Local $sRegPath = 'HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Run'
$settingsit   = TrayCreateMenu("随系统启动")
$Yes = TrayCreateItem("启动", $settingsit)
TrayItemSetOnEvent($Yes, "Yes")
$No = TrayCreateItem("关闭", $settingsit)
TrayItemSetOnEvent($No, "No")
$exititem = TrayCreateItem("退出")
TrayItemSetOnEvent($exititem, "ExitFun")
TraySetState()
If RegRead($sRegPath, @ScriptName) <> '' Then
        TrayItemSetState($Yes, 1)
Else
        TrayItemSetState($No, 1)
EndIf
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
Func Yes()
    RegWrite($sRegPath, @ScriptName, 'REG_SZ', '' & @ScriptFullPath)
TrayItemSetState($No, 4)
;RegWrite($sRegPath, @ScriptName, 'REG_SZ', '"' & @ScriptFullPath & '" /AUTO')
MsgBox(0, '状态:', '本程序将会随系统启动')
EndFunc   ;==>Yes
Func No()
    RegDelete($sRegPath, @ScriptName)
TrayItemSetState($Yes, 4)
MsgBox(0, '状态:', '本程序卸载随系统启动')
EndFunc   ;==>No
;---------------------------------------------------------程序源码------------------------------------------------

;;--------------------------------------------------------配置文件TrayMenu.ini------------------------------------
;
;[TrayMenu]
;1=工具菜单
;2=程序相关
;[TrayItem]
;1=测试1;AUTOIT.exe
;1=测试2;Tools\Scite\Scite.exe
;2=测试3;001\AUTOIT.exe
;
;---------------------------------------------------------配置文件TrayMenu.ini------------------------------------

本帖子中包含更多资源

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

×

评分

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

查看全部评分

发表于 2010-9-19 14:40:29 | 显示全部楼层
不编译,让它随系统启动,看看报在哪行?
 楼主| 发表于 2010-9-19 20:45:49 | 显示全部楼层
本帖最后由 yingf20 于 2010-9-20 14:53 编辑

回复 2# tianji028


  2楼,你说的方法我试了。出现这样的错误。



知道怎解决的朋友帮忙一下。在此谢谢。

本帖子中包含更多资源

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

×
发表于 2010-9-20 04:19:03 | 显示全部楼层
回复 1# yingf20

$iniFile = "TrayMenu.ini"  改为 $iniFile = @ScriptDir & "\TrayMenu.ini"
或者
FileInstall("TrayMenu.ini",@TempDir & "\TrayMenu.ini", 1)
$iniFile = @TempDir & "\TrayMenu.ini"
 楼主| 发表于 2010-9-20 14:59:55 | 显示全部楼层
回复 4# lixiaolong


    谢谢你的帮助。我知道错误在那行了,就是不知道怎改。你可以再进来看看,望你能帮我解决。
 楼主| 发表于 2010-9-20 18:38:58 | 显示全部楼层
怎么只看的多过帮忙的。唉,失望啊。。

希望高手快点出现。
发表于 2010-9-20 19:07:10 | 显示全部楼层
不懂,按上面4楼的方法不行吗??
 楼主| 发表于 2010-9-20 19:14:34 | 显示全部楼层
回复 7# zjg2003
  
还在上班中呢,等回家再试吧。不过收集多点相关的问题比较好吧。

这样以后出现问题好自己解决嘛~!学海无涯。。。。。。。。。~!
发表于 2010-9-20 20:55:59 | 显示全部楼层
偶刚才测试了下,错误可能出在“配置文件”上
[TrayMenu]
1=工具菜单
2=程序相关
[TrayItem]
1=测试1
2=测试2
3=测试3
除了IniWrite($tempFile, "MenuKey", $tid, $temp[1]) 中的$temp[1]超范围外,其它很正常了
发表于 2010-9-20 22:15:23 | 显示全部楼层
回复 4# lixiaolong

你的代码中有这句 $iniFile = "TrayMenu.ini"  
这句不随系统启动就可以打开,但随系统启动就打不开,就是找不到文件

主要把它改为 $iniFile = @ScriptDir & "\TrayMenu.ini"` ;指定完整路径
或者
FileInstall("TrayMenu.ini",@TempDir & "\TrayMenu.ini", 1)
$iniFile = @TempDir & "\TrayMenu.ini"

这样就可以打开了。
;---------------------------------------------------------程序源码------------------------------------------------
#include <Constants.au3>
#include <File.au3>


$iniFile = @ScriptDir & "\TrayMenu.ini"
;FileInstall("TrayMenu.ini",@TempDir & "\TrayMenu.ini", 1)
;$iniFile = @TempDir & "\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("")
Local $sRegPath = 'HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Run'
$settingsit   = TrayCreateMenu("随系统启动")
$Yes = TrayCreateItem("启动", $settingsit)
TrayItemSetOnEvent($Yes, "Yes")
$No = TrayCreateItem("关闭", $settingsit)
TrayItemSetOnEvent($No, "No")
$exititem = TrayCreateItem("退出")
TrayItemSetOnEvent($exititem, "ExitFun")
TraySetState()
If RegRead($sRegPath, @ScriptName) <> '' Then
        TrayItemSetState($Yes, 1)
Else
        TrayItemSetState($No, 1)
EndIf
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
Func Yes()
    RegWrite($sRegPath, @ScriptName, 'REG_SZ', '' & @ScriptFullPath)
TrayItemSetState($No, 4)
;RegWrite($sRegPath, @ScriptName, 'REG_SZ', '"' & @ScriptFullPath & '" /AUTO')
MsgBox(0, '状态:', '本程序将会随系统启动')
EndFunc   ;==>Yes
Func No()
    RegDelete($sRegPath, @ScriptName)
TrayItemSetState($Yes, 4)
MsgBox(0, '状态:', '本程序卸载随系统启动')
EndFunc   ;==>No
;---------------------------------------------------------程序源码------------------------------------------------

;;--------------------------------------------------------配置文件TrayMenu.ini------------------------------------
;
;[TrayMenu]
;1=工具菜单
;2=程序相关
;[TrayItem]
;1=测试1;AUTOIT.exe
;1=测试2;Tools\Scite\Scite.exe
;2=测试3;001\AUTOIT.exe
;
;---------------------------------------------------------配置文件TrayMenu.ini------------------------------------

评分

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

查看全部评分

 楼主| 发表于 2010-9-20 22:47:30 | 显示全部楼层
回复 10# lixiaolong


    感谢你的帮忙。。这个问题下班我就试试去。希望能行。
不管行不行。在此谢谢你们的帮忙。这样又让我学懂不少AU3的用法。
 楼主| 发表于 2010-9-20 22:48:49 | 显示全部楼层
回复 9# lchl0588


    谢谢帮忙。我下班就按你们的提示去试试。再次感谢。
您需要登录后才可以回帖 登录 | 加入

本版积分规则

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

GMT+8, 2024-10-3 06:26 , Processed in 0.100954 second(s), 29 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

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