找回密码
 加入
搜索
查看: 2875|回复: 10

[AU3基础] 如何让程序每执行一次都读取不同的参数呢?

 火.. [复制链接]
发表于 2012-3-18 20:24:44 | 显示全部楼层 |阅读模式
本帖最后由 leehomv 于 2012-3-18 20:28 编辑

在程序完全退出的情况下
第二次执行
这样是不是就需要第一次启动时写入返回值
第二次启动时读取返回值?并循环?
发表于 2012-3-18 20:35:26 | 显示全部楼层
群里也不说明白点,能否讲具体点 才能对症下药
都不明白你要干什么
 楼主| 发表于 2012-3-18 20:51:22 | 显示全部楼层
回复 2# Ycxw2008


就是手动运行程序 程序每次启动都会按顺序不重复执行的执行其他操作
发表于 2012-3-18 21:09:04 | 显示全部楼层
本帖最后由 Ycxw2008 于 2012-3-18 21:16 编辑

回复 3# leehomv
参数 这个单词 好像范围很广 做个例子给你看看 是不是这样

我猜你的意思 是不是 不想用ini类似的配置文件或tmp之类的 文件?
如果那样的话 估计你的想法有点不切实际了
Opt("GUIOnEventMode", 1)

Local $sCtrlBtn[2][8] = [["测 试 一", "测 试 二", "测 试 三", "测 试 四", "测 试 五", '读取', '保存', '退出']]
Local $hMain = GUICreate("", 200, 200, -1, -1)
GUISetOnEvent(-3, "_Exit")
For $i = 0 To UBound($sCtrlBtn, 2) - 4
        $sCtrlBtn[1][$i] = GUICtrlCreateCheckbox(StringFormat("%s\t%s\t%s",$sCtrlBtn[0][$i]), 10, 10 + $i * 25)
        If IniRead("t.ini", "Setting", "Menu" & $i, "") == 1 Then GUICtrlSetState(-1, 1)
Next
Local $Label=GUICtrlCreateLabel("",100,20,200,100),$sLabel=False
GUICtrlSetFont(-1, 24)
GUICtrlSetColor(-1, 0x0860a8)
$sCtrlBtn[1][5] = GUICtrlCreateButton($sCtrlBtn[0][5], 5, 160, 60, 30)
$sCtrlBtn[1][6] = GUICtrlCreateButton($sCtrlBtn[0][6], 65, 160, 60, 30)
$sCtrlBtn[1][7] = GUICtrlCreateButton($sCtrlBtn[0][7], 125, 160, 60, 30)
GUISetState()
GUICtrlSetOnEvent($sCtrlBtn[1][7], "_Exit")
GUIRegisterMsg(273, "WM_COMMAND")
While 1
        If $sLabel And GUICtrlRead($Label)="" Then GUICtrlSetData($Label,"已"&@CRLF&"修"&@CRLF&"改")
WEnd
Func _exit()
        Exit
EndFunc   ;==>_exit

Func WM_COMMAND($hWnd, $Msg, $wParma, $lParma)
        Local $CtrlID = BitAND($wParma, 0x0000FFFF)
        Switch $CtrlID
                Case $sCtrlBtn[1][0] To $sCtrlBtn[1][4]
                        If ($sLabel =False And GUICtrlRead($Label)="") Then $sLabel=True
                Case $sCtrlBtn[1][5]
                        For $i = 0 To 4
                                If BitAND(IniRead("t.ini", "Setting", "Menu" & $i, ''), 1) Then
                                        GUICtrlSetState($sCtrlBtn[1][$i], 1)
                                Else
                                        GUICtrlSetState($sCtrlBtn[1][$i], 4)
                                EndIf
                        Next
                        $sLabel=False
                        GUICtrlSetData($Label,"")
                Case $sCtrlBtn[1][6]
                        For $i = 0 To 4
                                IniWrite("t.ini", "Setting", "Menu" & $i, BitAND(GUICtrlRead($sCtrlBtn[1][$i]), 1))
                        Next
                        MsgBox(262144, '提示', '已保存')
                        ShellExecute("t.ini")
        EndSwitch
EndFunc   ;==>WM_COMMAND

评分

参与人数 3金钱 +60 贡献 +5 收起 理由
whitehead + 10 + 5 再一次感谢
lpxx + 20 很棒的见解
lixiaolong + 30

查看全部评分

 楼主| 发表于 2012-3-18 21:16:11 | 显示全部楼层
回复 4# Ycxw2008

比如参数就是执行其他程序
发表于 2012-3-18 21:18:12 | 显示全部楼层
回复 5# leehomv

    不然你就放出你的源码
    给大家帮你看看
   不然就无能为力了
    给了你例子了 你稍微看下吧
    要么就是刚才群里的例子
    传命令行参数 就是命令行里 test.exe -1[就做-1的事]
                                                            -2[就做-2的事]
 楼主| 发表于 2012-3-18 21:19:59 | 显示全部楼层
回复 6# Ycxw2008


好的
我现在弄
谢谢了
发表于 2012-3-19 15:32:33 | 显示全部楼层
串式参数例子


ParaFilter($CMDLINE[0])
Exit

Func ParaFilter($ParaCount)
 ;Run in No Parameter
 If $ParaCount < 1 Then
  Run(@ScriptFullPath & ' /InsDrv')
  Exit
 EndIf

 Switch $CMDLINE[1]
  Case '/InsDrv'
   AutoItSetOption('TrayIconHide', 1)
   Run(@ScriptFullPath & ' /ChkGUI ' & @AutoItPID)
   InsDrv()

  Case '/ChkGUI'
   AutoIns(Number($CMDLINE[2]))

EndSwitch
EndFunc   ;==>ParaFilter
发表于 2012-3-19 15:58:12 | 显示全部楼层
可以用参数, 也可以读取(文件\注册表等)获取'这个参数'的值吧!
第1次启动, 设立一个默认的起始值, 然后写文件等记录下一个值也行.
发表于 2012-3-19 20:46:25 | 显示全部楼层
创建ini文件来写入和读取参数应该可以吧?
发表于 2012-3-20 15:03:53 | 显示全部楼层
程序本身一般都是不可写的吧,要保存当然要有配置文件。每次都把配置保存一下,下次启动时读取就可以了。
您需要登录后才可以回帖 登录 | 加入

本版积分规则

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

GMT+8, 2024-5-20 08:26 , Processed in 0.100044 second(s), 27 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

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