找回密码
 加入
搜索
查看: 9306|回复: 15

[AU3基础] 【已解决】ini配置文件修改后,程序不重启读取最新值

 火.. [复制链接]
发表于 2014-11-20 14:09:24 | 显示全部楼层 |阅读模式
本帖最后由 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

[test]
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杀掉并重启加载。显然先凑合着吧。多谢各位。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?加入

×
发表于 2014-11-20 15:25:04 | 显示全部楼层
加一个变量 dim
发表于 2014-11-20 16:27:27 | 显示全部楼层
这个必须顶起。我的也是要重启脚本
发表于 2014-11-20 17:00:51 | 显示全部楼层
我也遇到这个情况,那要在while里开刀了
 楼主| 发表于 2014-11-20 17:45:43 | 显示全部楼层
回复 2# haopp1


这位哥,能详细说下么??
 楼主| 发表于 2014-11-20 17:48:37 | 显示全部楼层
回复 2# haopp1


这位哥,你的意思是搞个全局变量,在写ini的时候写进去了,用的时候接着用当前的写入值,是这么个意思么?
发表于 2014-11-20 17:49:23 | 显示全部楼层
回复 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
 楼主| 发表于 2014-11-20 20:43:22 | 显示全部楼层
本帖最后由 silentteamo 于 2014-11-20 20:57 编辑

回复 7# user3000


   哥,你这个的确是可以搞,我其实是想问,就是想有没有那种重新reload的方法,上面写的只是个demo,实际中配置项很多,一个一个iniread比较麻烦呀。原来我想让程序自杀的形式把自己干掉,在启动重新读一遍。哥,我说的这个重新读ini文件还有更优的方案没?

3k哥,我又补充了我的问题,烦请移目到发帖框查看。谢谢哥了。
发表于 2014-11-20 21:22:55 | 显示全部楼层
回复 8# silentteamo

如果嫌一个一个读比较麻烦,那当然做成同一个脚本.
用数组储存数据;这样可以简化代码.
发表于 2014-11-21 20:43:37 | 显示全部楼层
加入 一句即可~~~~

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?加入

×
 楼主| 发表于 2014-11-21 22:39:49 | 显示全部楼层
回复 10# tvzml


    哥,我懂你了。我谢谢你。
发表于 2014-11-22 00:01:16 | 显示全部楼层
可用 Fucn 调用重新读取新值!再调用就是最新值了!
发表于 2014-11-25 22:44:09 | 显示全部楼层
回复 6# silentteamo


    没错。就是这样 或者,你是用的时候在读取一次
发表于 2014-11-26 22:40:15 | 显示全部楼层
效果太好了,谢谢3000.正在努力学习中
发表于 2014-11-27 19:04:16 | 显示全部楼层
来学习了,
您需要登录后才可以回帖 登录 | 加入

本版积分规则

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

GMT+8, 2024-11-16 10:40 , Processed in 0.094051 second(s), 20 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

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