[已解决]If...Then...ElseIf...Else...EndIf 判断语句使用
本帖最后由 ccy666 于 2012-2-13 18:58 编辑想实现点击一个按钮启动一程序,该程序的路径未知。查找该程序的路径优先顺序是
1.从注册表的默认打开程序中查找是否有该默认打开程序存在,如果有就运行该程序
2.如果步骤1未找到,则从INI配置文件中读取,并运行该程序。
3.以上两步骤均未找到,则打开电脑目录指定到该程序运行之并把路径写入INI配置文件。
初步代码如下(其中有几个问题存在,请看注释):$var = StringSplit(RegRead("HKEY_CLASSES_ROOT\au3_auto_file\shell\open\command", ""), '"', 1)
IF $var = 0 Then
ShellExecute($var)
ElseIf $var = 0 Then ;此处ElseIf后的判断如何写?
$var2 = IniRead("manager.ini","SCITE","START","")
ShellExecute($var2)
Else
Local $message = "打开SCITE..."
Local $var3 = FileOpenDialog($message, "", "应用程序 (*.exe)", 1 )
If @error Then
MsgBox(4096,"","放弃打开SCITE!")
Else
IniWrite("manager.ini","SCITE","START",$var3) ;此处这样代码为何无法写入INI?
ShellExecute($var3)
EndIf
ENDIF烦请哪位老大帮忙指导一下,另外IF......THEN....ELSEIF......ENDIF判断语句中,IF后面有些看到用<> 0 ,=1 ,=-1 ,@error = -1 , @error = 1等等各在什么情况下用,请大伙解释一下或提供一些详细教材,先多谢了。 $var = StringSplit(RegRead("HKEY_CLASSES_ROOT\au3_auto_file\shell\open\command", ""), '"', 1)
If $var = 0 Then
ShellExecute($var)
Else ;下面的都需要先操作一部分代码,所以不适合用 ElseIf。当然这里要用也行,方式2
$var2 = IniRead("manager.ini", "SCITE", "START", "")
If FileExists($var2) Then
ShellExecute($var2)
Else
Local $message = "打开SCITE..."
Local $var3 = FileOpenDialog($message, "", "应用程序 (*.exe)", 1)
If @error Then
MsgBox(4096, "", "放弃打开SCITE!")
Else
IniWrite(@ScriptDir & "\manager.ini", "SCITE", "START", $var3)
;Ini函数在处理相对路径时会加上@WorkingDir,所以最好不要使用相对路径
ShellExecute($var3)
EndIf
EndIf
EndIf
;===================方式2
$var = StringSplit(RegRead("HKEY_CLASSES_ROOT\au3_auto_file\shell\open\command", ""), '"', 1)
If $var = 0 Then
ShellExecute($var)
ElseIf FileExists(IniRead("manager.ini", "SCITE", "START", "")) Then
ShellExecute($var2)
Else
Local $message = "打开SCITE..."
Local $var3 = FileOpenDialog($message, "", "应用程序 (*.exe)", 1)
If Not @error Then
IniWrite(@ScriptDir & "\manager.ini", "SCITE", "START", $var3)
ShellExecute($var3)
EndIf
EndIf 想实现点击一个按钮启动一程序,该程序的路径未知。查找该程序的路径优先顺序是
1.从注册表的默认打开程序 ...
ccy666 发表于 2012-2-13 16:00 http://www.autoitx.com/images/common/back.gif
建议在论坛搜索'教程', 下载一些基础教程, 或直接通读自带的帮助文件基础语法相关部分! 难道整理一下代码就真的这么难吗 回复 2# afan
A版辛苦了,测试了一会儿,方式一:提示LINE2 ERROR:错误的数组或者数组超出界限
方式二:$var2未定义,我添加了$var2= $var2 = IniRead("manager.ini", "SCITE", "START", "")
还是不能读取INI及写入INI呀。
帮我看看出错的原因,费心了,谢谢 回复afan
A版辛苦了,测试了一会儿,方式一:提示LINE2 ERROR:错误的数组或者数组超出界限
方 ...
ccy666 发表于 2012-2-13 17:58 http://www.autoitx.com/images/common/back.gif
只给你改了 If...Endif的判断,其它的并没有测试。不过 方式二确实没注意$var2的问题,抱歉 不知道 RegRead("HKEY_CLASSES_ROOT\au3_auto_file\shell\open\command", "") 读到的是什么?我这没有,所以也不知道 If $var = 0 Then 的用意 不知道 RegRead("HKEY_CLASSES_ROOT\au3_auto_file\shell\open\command", "") 读到的是什么?我这没有,所以 ...
afan 发表于 2012-2-13 18:08 http://www.autoitx.com/images/common/back.gif
高,问题就在这代码上,我想读的是注册表中的默认打开程序的路径如:
Windows Registry Editor Version 5.00
@="\"E:\\greensoft\\编程制作\\AUTOIT_3.3.7.15.1\\SciTe\\SciTE.exe\" \"%1\""
因为读出来后会包括后面的默认,而我只想要前面的路径。
只是如果没有加上后面的其它判断,这条件及代码是可用的。 本帖最后由 afan 于 2012-2-13 18:35 编辑
回复 8# ccy666 $var = StringRegExp(RegRead("HKEY_CLASSES_ROOT\au3_auto_file\shell\open\command", ""), '[^"]+', 1)
If Not @Error And FileExists($var) Then
ShellExecute($var)
Else ;下面的都需要先操作一部分代码,所以不适合用 ElseIf。
$var2 = IniRead(@ScriptDir & "\manager.ini", "SCITE", "START", "")
If FileExists($var2) Then
ShellExecute($var2)
Else
Local $message = "打开SCITE..."
Local $var3 = FileOpenDialog($message, "", "应用程序 (*.exe)", 1)
If @error Then
MsgBox(4096, "", "放弃打开SCITE!")
Else
IniWrite(@ScriptDir & "\manager.ini", "SCITE", "START", $var3)
;Ini函数在处理相对路径时会加上@WorkingDir,所以最好不要使用相对路径
ShellExecute($var3)
EndIf
EndIf
EndIf 本帖最后由 ccy666 于 2012-2-13 18:36 编辑
回复 9# afan
A版,测试了一下,在条件一注册表中未存在该程序路径时,此代码正常读取INI中路径位置并打开程序,但当条件一即注册表中存在该程序路径时,也是提示错误的数组或者数组超出界限。
这一点跟2楼的代码运行结果正好相反,2楼代码是当条件一注册表路径存在时不报错。不存在时报错。
另外如[^"]+这样的代码是在数组资料中学到的吗?谢谢 回复 10# ccy666
改正则时忘记把你的2改为0了,囧
楼上已修改 回复ccy666
改正则时忘记把你的2改为0了,囧
楼上已修改
afan 发表于 2012-2-13 18:36 http://www.autoitx.com/images/common/back.gif
呵呵,对您们这样的高人来说,修改代码比写代码更容易出错。
现在的代码完美运行了,我终于在LYNLR8的管理器上添加了一个打开本机SCITE的快捷按钮以方便调试,再次感谢您的帮助! 回复 12# ccy666
不客气~ 高人都有高就,也就没时间提供帮助,所以,我只是矮人,说到“矮人”,他还有强大的Dos工具,So,我只能换成菜鸟。 回复ccy666
不客气~ 高人都有高就,也就没时间提供帮助,所以,我只是矮人,说到“矮人”,他还 ...
afan 发表于 2012-2-13 19:04 http://www.autoitx.com/images/common/back.gif
{:face (356):}
原来你也很幽默。
页:
[1]