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

[系统综合] 【已解决】有什么思路能让电脑重启后不执行inputbox?

  [复制链接]
发表于 2012-3-27 13:29:55 | 显示全部楼层 |阅读模式
本帖最后由 apoorman1986 于 2012-3-27 14:58 编辑

写了个简单的小程序,代码如下
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()这个函数!只执行循环那部分。
各位大虾有什么好的思路!
发表于 2012-3-27 13:35:45 | 显示全部楼层
暂时应该还没有吧你看重注册表入手行吗
发表于 2012-3-27 13:38:17 | 显示全部楼层
操作注册表、个给你个功能类似的
[url]http://zhidao.baidu.com/question/389504172.html?an=0&si=1[/url]


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)
发表于 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
 楼主| 发表于 2012-3-27 13:42:59 | 显示全部楼层
回复 2# xz00311

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

我已经把上面的代码设置为开机启动,需要解决的是重启之后,不执行代码中的_setie()函数,只执行循环部分!
发表于 2012-3-27 13:44:02 | 显示全部楼层
思路
1.  程序启动  检测注册表中将自己启动的键值是否存在
2.  如不存在 ,说明是 第一次运行本程序 调用_setie() 函数 inputbox输入;
如果键值存在,说明不是第一次运行本程序 不需要调用本程序
发表于 2012-3-27 13:44:06 | 显示全部楼层
有配置文件, 则先读取内容吧?
Local $addr = IniRead(@ScriptDir&"\config.ini","Setup","URL", '')
If $addr = '' Then _setie()
 楼主| 发表于 2012-3-27 13:51:06 | 显示全部楼层
回复 4# zldfsz


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

你给的代码,那么第一次inputbox就不出来了
发表于 2012-3-27 13:55:16 | 显示全部楼层
晕,你的FileInstall的config.ini的Setup字段里URL留空不就得了
 楼主| 发表于 2012-3-27 13:57:41 | 显示全部楼层
回复 7# user3000


user3000这思路可以,我可以先读取INI里的网址,如果和默认的一样,就需要INPUTBOX,不一样的话,就不用了!
 楼主| 发表于 2012-3-27 14:05:28 | 显示全部楼层
回复 9# zldfsz

评分

参与人数 1金钱 -10 收起 理由
afan -10 警告,禁止纯表情!

查看全部评分

发表于 2015-5-18 11:32:31 | 显示全部楼层
thanks 4 sharing!
您需要登录后才可以回帖 登录 | 加入

本版积分规则

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

GMT+8, 2024-11-1 07:32 , Processed in 0.085616 second(s), 28 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

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