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

[AU3基础] 求救 怎么使用复选框 来执行复制多个已经勾选的文件?

    [复制链接]
发表于 2017-9-16 12:35:25 | 显示全部楼层 |阅读模式
本帖最后由 pzypdl2006 于 2017-9-16 12:37 编辑

窗口的代码如下:
#include <ButtonConstants.au3>
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
#Region ### START Koda GUI section ### Form=
$Form1 = GUICreate("COPY选择", 615, 437, 195, 130)
$Button_COPY = GUICtrlCreateButton("COPY", 152, 335, 113, 57)
GUICtrlSetFont(-1, 18, 400, 0, "MS Sans Serif")
$Group_SOFT = GUICtrlCreateGroup("SOFT", 40, 32, 129, 209)
$QQ = GUICtrlCreateCheckbox("QQ", 64, 56, 75, 18)
$WINRAR = GUICtrlCreateCheckbox("解压缩", 64, 80, 75, 17)
$OFFICE07 = GUICtrlCreateCheckbox("OFFICE07", 64, 104, 75, 17)
$ALLINONE = GUICtrlCreateCheckbox("ALLINONE", 64, 128, 75, 17)
GUICtrlCreateGroup("", -99, -99, 1, 1)
$Group_TOOL = GUICtrlCreateGroup("TOOL", 200, 32, 169, 209)
$IObitU = GUICtrlCreateCheckbox("IObitU", 224, 56, 75, 17)
GUICtrlCreateGroup("", -99, -99, 1, 1)
$Button_OPEN = GUICtrlCreateButton("OPEN", 311, 335, 113, 57)
GUICtrlSetFont(-1, 18, 400, 0, "MS Sans Serif")
$Group1 = GUICtrlCreateGroup("Group1", 400, 32, 169, 209)
GUICtrlCreateGroup("", -99, -99, 1, 1)
GUISetState(@SW_SHOW)
#EndRegion ### END Koda GUI section ###

While 1
        $nMsg = GUIGetMsg()
        Switch $nMsg
                Case $GUI_EVENT_CLOSE
                        Exit

EndSwitch
WEnd
如何做到勾选QQ、解压缩包后,点击COPY按钮,就可以将勾选的软件安装包拷贝到电脑的C盘1这个文件夹?
已经知道“创建文件夹”和“复制文件到某位置”的命令。


流程是:
打开窗口界面——>勾选所需的软件名——>点击COPY按钮——>程序执行拷贝所选文件到指定的文件夹中

哪位大神可以提供个思路?

本帖子中包含更多资源

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

×
 楼主| 发表于 2017-9-16 12:42:05 | 显示全部楼层
想到的思路是
①先声明变量每个软件包所在的路径
②点击COPY按钮时候,获取已经勾选的软件名
③根据第二步获取到的软件名对应的路径,然后依次执行每个文件拷贝命令
 楼主| 发表于 2017-9-16 12:42:40 | 显示全部楼层
就是不知道具体的代码怎么写,特别是让程序获取已经勾选的软件名对应的路径
发表于 2017-9-16 12:52:12 | 显示全部楼层
        Local $idQQ = GUICtrlCreateCheckbox("QQ", 10, 10, 185, 25)
;====中略

if BitAND(GUICtrlRead($idQQ ), $GUI_CHECKED) = $GUI_CHECKED Then 

;===略
发表于 2017-9-16 17:53:05 | 显示全部楼层
把软件路径等等对应信息存储在配置文件里.
...
与其花心思自己空想,还不如直接在论坛里搜索现在的源码例子?
发表于 2017-9-16 22:42:06 | 显示全部楼层
#include <ButtonConstants.au3>
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
#Region ### START Koda GUI section ### Form=
$Form1 = GUICreate("COPY选择", 615, 437, 195, 130)
$Button_COPY = GUICtrlCreateButton("COPY", 152, 335, 113, 57)
GUICtrlSetFont(-1, 18, 400, 0, "MS Sans Serif")
$Group_SOFT = GUICtrlCreateGroup("SOFT", 40, 32, 129, 209)
$QQ = GUICtrlCreateCheckbox("QQ", 64, 56, 75, 18)
$WINRAR = GUICtrlCreateCheckbox("解压缩", 64, 80, 75, 17)
$OFFICE07 = GUICtrlCreateCheckbox("OFFICE07", 64, 104, 75, 17)
$ALLINONE = GUICtrlCreateCheckbox("ALLINONE", 64, 128, 75, 17)
GUICtrlCreateGroup("", -99, -99, 1, 1)
$Group_TOOL = GUICtrlCreateGroup("TOOL", 200, 32, 169, 209)
$IObitU = GUICtrlCreateCheckbox("IObitU", 224, 56, 75, 17)
GUICtrlCreateGroup("", -99, -99, 1, 1)
$Button_OPEN = GUICtrlCreateButton("OPEN", 311, 335, 113, 57)
GUICtrlSetFont(-1, 18, 400, 0, "MS Sans Serif")
$Group1 = GUICtrlCreateGroup("Group1", 400, 32, 169, 209)
GUICtrlCreateGroup("", -99, -99, 1, 1)
GUISetState(@SW_SHOW)
#EndRegion ### END Koda GUI section ###

While 1
        $nMsg = GUIGetMsg()
        Switch $nMsg
                Case $GUI_EVENT_CLOSE
                        Exit
                        Case $Button_COPY
                                _Copy()
EndSwitch
WEnd

Func _Copy()
        Local $aAry[5] = ['QQ','WINRAR','OFFICE07','ALLINONE','IObitU']
        For $i = 0 To UBound($aAry) - 1
                If GUICtrlRead(Eval($aAry[$i])) = 1 Then MsgBox(512,'','选择安装 ' & $aAry[$i],1,$Form1)
        Next        
EndFunc
看看这样是否符合你的需求
 楼主| 发表于 2017-9-19 01:18:15 | 显示全部楼层
回复 6# zghwelcome

你的代码可以达到效果,自己根据实际需要修改了下,就不行了
While 1
        $nMsg = GUIGetMsg()
        Switch $nMsg
                Case $GUI_EVENT_CLOSE
                        Exit
                                        Case $Button_COPY
                                                $NON_DIR =IniRead("NON_CORY.INI","main_ini","NON_DIR","ERROR")
                                                DirCreate(@DesktopDir & $NON_DIR)

                                _Copy()
EndSwitch
WEnd


Func _Copy()
        Local $aAry[5] = [_QQ(),_WINRAR(),_OFFICE07(),_ALLINONE(),_IOBITU()]
        ;Local $aAry[5] = ['QQ','WINRAR','OFFICE07','ALLINONE','IObitU']
                For $i = 0 To UBound($aAry) - 1
               If GUICtrlRead(Eval($aAry[$i])) = 1 Then Run($aAry[$i])
        Next        
EndFunc
        
Func _QQ()
        FileCopy(IniRead("NON_CORY.ini","soft","QQ","ERROR"),@DesktopDir & $NON_DIR)
EndFunc

Func _WINRAR()
        FileCopy(IniRead("NON_CORY.ini","soft","WINRAR","ERROR"),@DesktopDir & $NON_DIR)
EndFunc

Func _OFFICE07()
        FileCopy(IniRead("NON_CORY.ini","soft","OFFICE07","ERROR"),@DesktopDir & $NON_DIR)
EndFunc

Func _ALLINONE()
        FileCopy(IniRead("NON_CORY.ini","soft","集合包","ERROR"),@DesktopDir & $NON_DIR)
EndFunc

Func _IOBITU()
        FileCopy(IniRead("NON_CORY.ini","soft","IOBITU","ERROR"),@DesktopDir & $NON_DIR)
EndFunc
ini的配置文件是
[main_ini]
NON_DIR="\NON"

[soft]
WINRAR=c:\1\WINRAR.txt
QQ=c:\1\QQ.txt
OFFICE03=c:\1\OFFICE03.txt
OFFICE07=c:\1\OFFICE07.txt
WPS=c:\1\WPS.txt
集合包=c:\1\2345.txt
IOBITU=c:\1\IOBITU.txt

[drive]
WINXP=
WIN7_32=
WIN7_64=
WIN10_64=
发表于 2017-9-19 07:24:55 | 显示全部楼层
run???建议楼主多学学基础
发表于 2017-9-19 14:34:57 | 显示全部楼层
学习 学习 谢谢楼主分享
 楼主| 发表于 2017-9-19 21:24:17 | 显示全部楼层
回复 8# yamakawa

是啊  需要多学习学习基础,~~~~(>_<)~~~~
 楼主| 发表于 2017-9-19 21:24:59 | 显示全部楼层
回复 8# yamakawa

是啊  需要多学习学习基础,~~~~(>_<)~~~~

望指点下^_^
发表于 2017-9-20 21:03:34 | 显示全部楼层
回复 11# pzypdl2006


    随便写的,未做详细测试,仅供参考
#cs
ACN论坛 Yamakawa涂鸦之作,仅供参考,贻笑方家了!
#ce


#include <ButtonConstants.au3>
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
#include <Array.au3>

Local $softArray = IniReadSection(@ScriptDir & "\NON_CORY.ini", "soft")
Local $idArray[$softArray[0][0] + 1]

#Region ### START Koda GUI section ### Form=
$Form1 = GUICreate("COPY选择", 615, 437, 195, 130)
$Button_COPY = GUICtrlCreateButton("COPY", 152, 335, 113, 57)
GUICtrlSetFont(-1, 18, 400, 0, "MS Sans Serif")
$Group_SOFT = GUICtrlCreateGroup("SOFT", 40, 32, 129, 209)
For $i = 1 To $softArray[0][0]
        $idArray[$i] = GUICtrlCreateCheckbox($softArray[$i][0], 64, 56 + ($i - 1) * 24, 75, 18)
Next

GUICtrlCreateGroup("", -99, -99, 1, 1)

GUISetState(@SW_SHOW)
#EndRegion ### END Koda GUI section ###

While 1
        $nMsg = GUIGetMsg()
        Switch $nMsg
                Case $GUI_EVENT_CLOSE
                        Exit
                Case $Button_COPY
                        For $i = 1 To $softArray[0][0]
                                If BitAND(GUICtrlRead($idArray[$i]), $GUI_CHECKED) = $GUI_CHECKED Then MsgBox(0, "", "你选择了 " & $softArray[$i][1])
                        Next
                        
                        
        EndSwitch
WEnd
您需要登录后才可以回帖 登录 | 加入

本版积分规则

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

GMT+8, 2024-4-18 19:18 , Processed in 0.079575 second(s), 20 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

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