【已解决】ini配置文件修改后,程序不重启读取最新值
本帖最后由 silentteamo 于 2014-11-21 22:45 编辑事情是这样的,就是运行脚本后,会修改ini文件,但需要重启脚本才能重新读入。
想请教的问题是,如何可以不重启程序,可以重新加载配置文件中的最新值。 #include <ButtonConstants.au3>
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
Opt("GUIOnEventMode", 1)
#Region ### START Koda GUI section ### Form=
$Form1 = GUICreate("Form1", 615, 104, 192, 124)
GUISetOnEvent($GUI_EVENT_CLOSE, "Form1Close")
$Button1 = GUICtrlCreateButton(IniRead(@ScriptDir & "\test.ini","test","test1",""), 520, 32, 75, 25)
GUICtrlSetOnEvent(-1, "Button1Click")
GUISetState(@SW_SHOW)
#EndRegion ### END Koda GUI section ###
While 1
Sleep(100)
WEnd
Func Button1Click()
$a = InputBox('','','')
IniWrite(@ScriptDir & "\test.ini","test","test1",$a)
EndFunc
Func Form1Close()
Exit
EndFunc
配置文件:
文件名:test.ini
test1 =123
-------------
点击界面中的123按钮,弹出input输入框,输入新的值后,会写到ini文件中,界面中如何实现不重启的情况下,重新读取ini最近的写入值。
补充:回复 7# user3000
3k哥,给我说的是iniread一遍配置文件。这样的确可以读,我在补充一下我的意思吧。
实际中,是client.au3和config.au3这两个脚本。一个配置文件T_config.ini
client.au3 这个脚本运行后会读取 T_config.ini文件内的内容,该脚本中添加了一个按钮,点击后会弹出config.au3这个脚本窗口。config.au3这个窗口呢是对client.au3这个程序的配置。因为修改后,配置文件是被修改了。但是client.au3因为没有关闭,读的还是之前的配置内容。
我这个要求是不是太过分了???现在就是想配置窗口修改配置文件后,cient.au3这个脚本如何不重启,就可以使用新的修改值。
(当然也可以一个脚本内,写俩窗口,不用分开。各位哥,给个思路啥的,小弟跪谢。)
解决方案:各位哥给的方法,虽然能达到目的,可能还不是我想要的,最后的解决方式还是俩脚本,脚本中生成外置的vbs和bat文件,使用RUN运行vbs杀掉并重启加载。显然先凑合着吧。多谢各位。 加一个变量 dim 这个必须顶起。我的也是要重启脚本 我也遇到这个情况,那要在while里开刀了 回复 2# haopp1
这位哥,能详细说下么?? 回复 2# haopp1
这位哥,你的意思是搞个全局变量,在写ini的时候写进去了,用的时候接着用当前的写入值,是这么个意思么? 回复 1# silentteamo
怎么可能读不了??#include <ButtonConstants.au3>
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
Opt("GUIOnEventMode", 1)
#Region ### START Koda GUI section ### Form=
$Form1 = GUICreate("Form1", 615, 104, 192, 124)
GUISetOnEvent($GUI_EVENT_CLOSE, "Form1Close")
$Button1 = GUICtrlCreateButton(IniRead(@ScriptDir & "\test.ini","test","test1","default"), 520, 32, 75, 25)
GUICtrlSetOnEvent(-1, "Button1Click")
GUISetState(@SW_SHOW)
#EndRegion ### END Koda GUI section ###
While 1
Sleep(100)
WEnd
Func Button1Click()
$a = InputBox('','','')
If Not @error Then
IniWrite(@ScriptDir & "\test.ini","test","test1",$a)
;Sleep(100)
GUICtrlSetData($Button1, IniRead(@ScriptDir & "\test.ini","test","test1","default"))
EndIf
EndFunc
Func Form1Close()
Exit
EndFunc 本帖最后由 silentteamo 于 2014-11-20 20:57 编辑
回复 7# user3000
哥,你这个的确是可以搞,我其实是想问,就是想有没有那种重新reload的方法,上面写的只是个demo,实际中配置项很多,一个一个iniread比较麻烦呀。原来我想让程序自杀的形式把自己干掉,在启动重新读一遍。哥,我说的这个重新读ini文件还有更优的方案没?
3k哥,我又补充了我的问题,烦请移目到发帖框查看。谢谢哥了。 回复 8# silentteamo
如果嫌一个一个读比较麻烦,那当然做成同一个脚本.
用数组储存数据;这样可以简化代码. 加入 一句即可~~~~ 回复 10# tvzml
哥,我懂你了。我谢谢你。 可用 Fucn 调用重新读取新值!再调用就是最新值了! 回复 6# silentteamo
没错。就是这样 或者,你是用的时候在读取一次 效果太好了,谢谢3000.正在努力学习中 来学习了,
页:
[1]
2