AutoIt 错误。路过的朋友帮忙一下。[已解决]
本帖最后由 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
$menu = TrayCreateMenu($varTrayMenuList[$i])
For $j = 1 To $varTrayItemList
If ($varTrayItemList[$j] == $varTrayMenuList[$i]) Then
$temp = StringSplit($varTrayItemList[$j], ";")
$tid = TrayCreateItem($temp, $menu)
TrayItemSetOnEvent($tid, "RunApp")
IniWrite($tempFile, "MenuKey", $tid, $temp)
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
If ($varMenuKeyList[$k] == @TRAY_ID) Then
RunWait($varMenuKeyList[$k])
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------------------------------------
;
;
;1=工具菜单
;2=程序相关
;
;1=测试1;AUTOIT.exe
;1=测试2;Tools\Scite\Scite.exe
;2=测试3;001\AUTOIT.exe
;
;---------------------------------------------------------配置文件TrayMenu.ini------------------------------------
不编译,让它随系统启动,看看报在哪行? 本帖最后由 yingf20 于 2010-9-20 14:53 编辑
回复 2# tianji028
2楼,你说的方法我试了。出现这样的错误。
知道怎解决的朋友帮忙一下。在此谢谢。 回复 1# yingf20
$iniFile = "TrayMenu.ini"改为 $iniFile = @ScriptDir & "\TrayMenu.ini"
或者
FileInstall("TrayMenu.ini",@TempDir & "\TrayMenu.ini", 1)
$iniFile = @TempDir & "\TrayMenu.ini" 回复 4# lixiaolong
谢谢你的帮助。我知道错误在那行了,就是不知道怎改。你可以再进来看看,望你能帮我解决。 怎么只看的多过帮忙的。唉,失望啊。。
希望高手快点出现。 不懂,按上面4楼的方法不行吗?? 回复 7# zjg2003
还在上班中呢,等回家再试吧。不过收集多点相关的问题比较好吧。
这样以后出现问题好自己解决嘛~!学海无涯。。。。。。。。。~! 偶刚才测试了下,错误可能出在“配置文件”上
1=工具菜单
2=程序相关
1=测试1
2=测试2
3=测试3除了IniWrite($tempFile, "MenuKey", $tid, $temp) 中的$temp超范围外,其它很正常了 回复 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
$menu = TrayCreateMenu($varTrayMenuList[$i])
For $j = 1 To $varTrayItemList
If ($varTrayItemList[$j] == $varTrayMenuList[$i]) Then
$temp = StringSplit($varTrayItemList[$j], ";")
$tid = TrayCreateItem($temp, $menu)
TrayItemSetOnEvent($tid, "RunApp")
IniWrite($tempFile, "MenuKey", $tid, $temp)
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
If ($varMenuKeyList[$k] == @TRAY_ID) Then
RunWait($varMenuKeyList[$k])
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------------------------------------
;
;
;1=工具菜单
;2=程序相关
;
;1=测试1;AUTOIT.exe
;1=测试2;Tools\Scite\Scite.exe
;2=测试3;001\AUTOIT.exe
;
;---------------------------------------------------------配置文件TrayMenu.ini------------------------------------ 回复 10# lixiaolong
感谢你的帮忙。。这个问题下班我就试试去。希望能行。
不管行不行。在此谢谢你们的帮忙。这样又让我学懂不少AU3的用法。 回复 9# lchl0588
谢谢帮忙。我下班就按你们的提示去试试。再次感谢。
页:
[1]