仿WINDOWS进度复制文件夹源码例程

仿WINDOWS进度复制文件夹源码例程

.版本 2 .支持库 shell .支持库 EThread .程序集 窗口程序集1 .程序集变量 目录数组, 文本型, , "0" .程序集变量 文件数组, 文本型, , "0" .程序集变量 线程句柄, 整数型 .子程序 _按钮1_被单击 .局部变量 path, 文本型 path = 浏览文件夹 (“请选择原目录:”, ) .如果真 (path ≠ 取空白文本 (0)) 编辑框1.内容 = path .如果真结束 .子程序 _按钮2_被单击 .局部变量 path, 文本型 path = 浏览文件夹 (“请选择新目录:”, ) .如果真 (path ≠ 取空白文本 (0)) 编辑框2.内容 = path .如果真结束 .子程序 _按钮3_被单击 清除数组 (目录数组) 清除数组 (文件数组) 按钮3.禁止 = 真 启动线程 (&线程_进度显示, , 线程句柄) .子程序 线程_进度显示 .局部变量 计次, 整数型 .局部变量 dir, 文本型 .局部变量 计次一, 整数型 .局部变量 path, 文本型 .局部变量 swit, 逻辑型 .局部变量 num, 整数型 标签3.标题 = “正在统计所有文件/文件夹...” 子程序_核心搜索 (编辑框1.内容) 标签3.标题 = “正在创建所需文件夹...” 进度条1.位置 = 0 进度条1.最大位置 = 取数组成员数 (目录数组) .计次循环首 (取数组成员数 (目录数组), 计次) dir = 子文本替换 (目录数组 [计次], 编辑框1.内容, 编辑框2.内容, , 1, 真) 创建目录 (dir) 进度条1.位置 = 进度条1.位置 + 1 .计次循环尾 () 标签3.标题 = “文件复制中...” 进度条1.位置 = 0 进度条1.最大位置 = 取数组成员数 (文件数组) .计次循环首 (取数组成员数 (文件数组), 计次一) path = 子文本替换 (文件数组 [计次一], 编辑框1.内容, 编辑框2.内容, , 1, 真) swit = CopyFileExA (文件数组 [计次一], path, &CopyProgressRoutine, 0, 0, #COPY_FILE_RESTARTABLE) .如果真 (swit = 假) num = num + 1 .如果真结束 进度条1.位置 = 进度条1.位置 + 1 .计次循环尾 () 标签3.标题 = “报告老大已经全部搞定... 失败:” + 到文本 (num) + “个” 按钮3.禁止 = 假 .子程序 CopyProgressRoutine, 整数型 .参数 TotalFileSize, 双精度小数型 .参数 TotalBytesTransferred, 双精度小数型 .参数 StreamSize, 双精度小数型 .参数 StreamBytesTransferred, 双精度小数型 .参数 dwStreamNumber .参数 dwCallbackReason .参数 hSourceFile .参数 hDestinationFile .参数 lpData 进度条2.位置 = 取整 (TotalBytesTransferred × 10000 ÷ (TotalFileSize × 10000) × 100) 返回 (#PROGRESS_CONTINUE) .子程序 子程序_核心搜索 .参数 目标目录, 文本型 .局部变量 文件名, 文本型 文件名 = 寻找文件 (目标目录 + “\*.*”, #子目录) .判断循环首 (文件名 ≠ “”) .如果真 (文件名 ≠ “.” 且 文件名 ≠ “..”) 加入成员 (目录数组, 目标目录 + “\” + 文件名) 子程序_核心搜索 (目标目录 + “\” + 文件名) .如果真结束 文件名 = 寻找文件 (, #子目录) .判断循环尾 () 文件名 = 寻找文件 (目标目录 + “\*.*”, ) .判断循环首 (文件名 ≠ “”) 加入成员 (文件数组, 目标目录 + “\” + 文件名) 文件名 = 寻找文件 (, ) .判断循环尾 () .子程序 __启动窗口_可否被关闭, 逻辑型 .如果真 (按钮3.禁止) .如果真 (信息框 (“正在复制文件中,是否强制关闭?”, 4 + 48, ) = 6) 返回 (假) .如果真结束 强制结束线程 (线程句柄) .如果真结束 .子程序 __启动窗口_创建完毕

仿WINDOWS进度复制文件夹源码例程》有0个想法

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注