【已解决】有什么思路能让电脑重启后不执行inputbox?
本帖最后由 apoorman1986 于 2012-3-27 14:58 编辑{:face (382):}写了个简单的小程序,代码如下
FileInstall("c:\config.ini",@ScriptDir&"\config.ini",1)
_setie()
While 1
...
WEnd
Func _setie()
$addr=InputBox("提示","请输入一个网址")
IniWrite(@ScriptDir&"\config.ini","Setup","URL",$addr)
Sleep(200)
EndFunc
把该程序设置为开机启动,但我的思路是只需要用户第一次运行该程序时要输入一个网址,以后不论关机再开机,或者重启,开机启动该程序时,不需要执行上面代码中的_setit()这个函数!只执行循环那部分。
各位大虾有什么好的思路! 暂时应该还没有吧你看重注册表入手行吗 操作注册表、个给你个功能类似的
http://zhidao.baidu.com/question/389504172.html?an=0&si=1
Opt("MustDeclareVars", 1)
If Not FileExists(@ScriptDir & "\声卡硬件id.ini") Then
MsgBox(16, "配置文件不存在", "请检查配置文件:" & @CRLF & @ScriptDir & "\声卡硬件id.ini")
Exit
EndIf
If Not FileExists(@ScriptDir & "\devcon.exe") Then
MsgBox(16, "devcon.exe文件不存在", "请检查:" & @CRLF & @ScriptDir & "\devcon.exe")
Exit
EndIf
Local $key = "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run"
Local $reg = RegRead($key, "jiankong")
If @error Then
RegWrite($key, "jiankong", "REG_SZ", @ScriptDir & "\启用禁用声卡.exe")
MsgBox(0, "启动键值写入注册表", "下次开机将自启动本程序,请按[确定]退出")
Exit
EndIf
Local $hardid = IniRead (@ScriptDir & "\声卡硬件id.ini", "参数", "id", "")
Local $exefile = IniRead (@ScriptDir & "\声卡硬件id.ini", "参数", "exe", "")
Local $delay = IniRead (@ScriptDir & "\声卡硬件id.ini", "参数", "sec", "8")
If $hardid = "" Or $exefile = "" Then
MsgBox(16, "配置文件出错", "请检查配置文件:" & @CRLF & @ScriptDir & "\声卡硬件id.ini")
Exit
EndIf
Local $command_dis = @ScriptDir & "\devcon.exe disable " & '"' & $hardid & '"'
Local $command_en = @ScriptDir & "\devcon.exe enable " & '"' & $hardid & '"'
RunWait(@ComSpec & " /c " & $command_dis, "", @SW_HIDE)
Sleep(1000*Number($delay))
Run($exefile)
Sleep(1000*Number($delay));;;;这行缺了个 ) 导致bug
RunWait(@ComSpec & " /c " & $command_en, "", @SW_HIDE)
ToolTip("完成!" & @CRLF & "谢谢使用!", @DesktopWidth/2, @DesktopHeight/2)
Sleep(3000)
本帖最后由 zldfsz 于 2012-3-27 13:46 编辑
读取配置文件,URL的值为空就要求输入
If Not IniRead(@ScriptDir&"\config.ini","Setup","URL","") Then _setie()
While 1
Sleep(200)
WEnd
Func _setie()
$addr=InputBox("提示","请输入一个网址")
IniWrite(@ScriptDir&"\config.ini","Setup","URL",$addr)
EndFunc 回复 2# xz00311
没认真看我的问题吧!从注册表入手?
我已经把上面的代码设置为开机启动,需要解决的是重启之后,不执行代码中的_setie()函数,只执行循环部分! 思路
1.程序启动检测注册表中将自己启动的键值是否存在
2.如不存在 ,说明是 第一次运行本程序 调用_setie() 函数 inputbox输入;
如果键值存在,说明不是第一次运行本程序 不需要调用本程序 有配置文件, 则先读取内容吧?
Local $addr = IniRead(@ScriptDir&"\config.ini","Setup","URL", '')
If $addr = '' Then _setie() 回复 4# zldfsz
开头我忘了一行了,是这样的,开头还有一行。
FileInstall("c:\config.ini",@ScriptDir&"\config.ini",1)
config.ini这个文件是存在的啊,if not iniread不能读取,就执行_setie().
你给的代码,那么第一次inputbox就不出来了 晕,你的FileInstall的config.ini的Setup字段里URL留空不就得了 回复 7# user3000
user3000这思路可以,我可以先读取INI里的网址,如果和默认的一样,就需要INPUTBOX,不一样的话,就不用了!{:face (316):} {:face (197):}{:face (316):}回复 9# zldfsz thanks 4 sharing!
页:
[1]