apoorman1986 发表于 2012-3-27 13:29:55

【已解决】有什么思路能让电脑重启后不执行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()这个函数!只执行循环那部分。
各位大虾有什么好的思路!

xz00311 发表于 2012-3-27 13:35:45

暂时应该还没有吧你看重注册表入手行吗

veket_linux 发表于 2012-3-27 13:38:17

操作注册表、个给你个功能类似的
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:42:55

本帖最后由 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

apoorman1986 发表于 2012-3-27 13:42:59

回复 2# xz00311

没认真看我的问题吧!从注册表入手?

我已经把上面的代码设置为开机启动,需要解决的是重启之后,不执行代码中的_setie()函数,只执行循环部分!

veket_linux 发表于 2012-3-27 13:44:02

思路
1.程序启动检测注册表中将自己启动的键值是否存在
2.如不存在 ,说明是 第一次运行本程序 调用_setie() 函数 inputbox输入;
如果键值存在,说明不是第一次运行本程序 不需要调用本程序

user3000 发表于 2012-3-27 13:44:06

有配置文件, 则先读取内容吧?
Local $addr = IniRead(@ScriptDir&"\config.ini","Setup","URL", '')
If $addr = '' Then _setie()

apoorman1986 发表于 2012-3-27 13:51:06

回复 4# zldfsz


开头我忘了一行了,是这样的,开头还有一行。
FileInstall("c:\config.ini",@ScriptDir&"\config.ini",1)
config.ini这个文件是存在的啊,if not iniread不能读取,就执行_setie().

你给的代码,那么第一次inputbox就不出来了

zldfsz 发表于 2012-3-27 13:55:16

晕,你的FileInstall的config.ini的Setup字段里URL留空不就得了

apoorman1986 发表于 2012-3-27 13:57:41

回复 7# user3000


user3000这思路可以,我可以先读取INI里的网址,如果和默认的一样,就需要INPUTBOX,不一样的话,就不用了!{:face (316):}

apoorman1986 发表于 2012-3-27 14:05:28

{:face (197):}{:face (316):}回复 9# zldfsz

z7c9 发表于 2015-5-18 11:32:31

thanks 4 sharing!
页: [1]
查看完整版本: 【已解决】有什么思路能让电脑重启后不执行inputbox?