找回密码
 加入
搜索
查看: 6728|回复: 18

[AU3基础] DirCopy同时显示气球提示,怎么做?

  [复制链接]
发表于 2010-12-31 10:05:14 | 显示全部楼层 |阅读模式
DirCopy同时显示气球提示,怎么做?
进度条不好做,想在Dircopy时有气球提示,直到copy完
但是不copy完又不继续执行下面的显示气球语句
怎么写能同时执行呢?
发表于 2010-12-31 11:09:25 | 显示全部楼层
你的要求:
TrayTip()
DirCopy()
TrayTip()
如果需要进度条,请参考api SHFileOperationW(注:2003及以下) IFileOperation(vista及以上)
 楼主| 发表于 2010-12-31 11:18:27 | 显示全部楼层
你的要求:如果需要进度条,请参考api SHFileOperationW(注:2003及以下) IFileOperation(vista及以上)
ceoguang 发表于 2010-12-31 11:09


我的意思是在拷贝的时候不停显示“.”“..”“...”表示正在拷贝
如果像上面这样写的话,拷贝之前有,拷贝结束了才有气泡提示阿(拷贝文件的时间好多分钟呢)
发表于 2010-12-31 11:55:29 | 显示全部楼层
Dircopy无法取文件及文件夹的大小,如果需要进度条,上面已经说了.
xp的话可以用这个
#Include <WinAPIEx.au3>
 _WinAPI_ShellFileOperation("d:\snow_fuck_sxd_1080p.rmvb", 'c:\', $FO_COPY, $FOF_ALLOWUNDO)
 楼主| 发表于 2010-12-31 12:33:10 | 显示全部楼层
本帖最后由 dearmb 于 2010-12-31 12:34 编辑
Dircopy无法取文件及文件夹的大小,如果需要进度条,上面已经说了.
xp的话可以用这个
ceoguang 发表于 2010-12-31 11:55


我的意思是说,我现在放弃进度条的话
拷贝开始---拷贝结束之间,循环弹出气球"........."表示当前正在拷贝操作

如果用shell的话,有办法判断成功与失败吗?像dircopy返回1或0那样
发表于 2010-12-31 12:41:41 | 显示全部楼层
成功返回0,失败返回非0
 楼主| 发表于 2010-12-31 13:01:40 | 显示全部楼层
成功返回0,失败返回非0
ceoguang 发表于 2010-12-31 12:41


放弃进度条的话
拷贝开始---拷贝结束之间,循环弹出气球"........."表示当前正在拷贝操作

这个有办法吗?
 楼主| 发表于 2010-12-31 13:05:53 | 显示全部楼层
回复 7# dearmb

#Include <WinAPIEx.au3>
$a=_WinAPI_ShellFileOperation("E:\bac1\a", 'D:\EntrySystems', $FO_COPY, $FOF_ALLOWUNDO)
MsgBox(0,"",$a)

我这样写的,如果成功复制粘贴,msgbox弹出的是空的,啥内容都没有
我把源文件改成错的,找不到源磁盘,msgbox弹出的是0
发表于 2010-12-31 13:19:25 | 显示全部楼层
我错了
成功是返回$tagSHFILEOPSTRUCT,这是一个指针结构,你直接取肯定取不到
失败才是返回0
 楼主| 发表于 2010-12-31 13:38:52 | 显示全部楼层
放弃进度条的话
拷贝开始---拷贝结束之间,循环弹出气球"........."表示当前正在拷贝操作

这个有办法吗?

这个……有没有办法做到呀?
一直没回答我这个……
发表于 2010-12-31 13:48:35 | 显示全部楼层
办法肯定是有的,而且不止一种.
例如:可以先历遍目录,先创建文件夹,然后取所有文件的总字节,用filewrite的方式来写文件,一路dirgetsize,那样就知道进度为多少了.
 楼主| 发表于 2010-12-31 14:03:44 | 显示全部楼层
办法肯定是有的,而且不止一种.
例如:可以先历遍目录,先创建文件夹,然后取所有文件的总字节,用filewrite的方 ...
ceoguang 发表于 2010-12-31 13:48



啊阿啊阿啊,我要晕啦~~是我没说明白吗?不做进度条
我就是想要在开始拷贝和拷贝结束之间,弹出个气球起到提示作用
什么什么计算文件大小什么的,都不算,就是显示“正在拷贝。”“正在拷贝。。”“正在拷贝。。。”,三个循环重复,就好像动画一样
我不去管拷贝了多长时间,剩余多长时间,拷了多少,没拷多少,就是只弹气球,什么都不计算……
我是怕拷贝文件大的话,要拷贝很长时间,进度条太难弄,就干脆弄个气球表示正在拷贝就可以了
发表于 2010-12-31 14:35:45 | 显示全部楼层
好吧,我样子有问题.........
按你的要求一样可以用SHFileOperationW的,标志设置为$FOF_NO_UI就不显示窗口了,然后用GetLine来读取IO输入流,就可以得到当前正在复制的文件名或文件夹名了.但是这样一来,你就必需用回调函数或timer之类来实现,因为SHFileOperationW要复制完才会返回,当然,dircopy也是,但dircopy你是取不到IO流的
 楼主| 发表于 2010-12-31 15:59:33 | 显示全部楼层
好吧,我样子有问题.........
按你的要求一样可以用SHFileOperationW的,标志设置为$FOF_NO_UI就不显示窗口了 ...
ceoguang 发表于 2010-12-31 14:35



我想你还是没明白我的意思
$a=DirCopy("源路径","目的路径",1)  ;开始拷贝

Do
TrayTip("","正在复制。    ",5)
Sleep (500)
TrayTip("清除","。",5)
TrayTip("","正在复制。。  ",5)
Sleep (500)
TrayTip("清除","。",5)
TrayTip("","正在复制。。。",5)
Sleep (500)
TrayTip("清除","。",5)
Until $a=1 Or $a=0

If $a=1 Then   ;拷贝结束
If $a=0 Then  ; 拷贝结束

我就这意思,拷贝的时候有气球提示,直到拷贝结束……
能不能做到?
发表于 2010-12-31 16:16:39 | 显示全部楼层
我承认我样子真的不好.
13#已经说清楚了DirCopy是执行完才会返回,而且取不到数据流.除非HOOK,否则你是取不到文件名的
您需要登录后才可以回帖 登录 | 加入

本版积分规则

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

GMT+8, 2024-9-21 14:33 , Processed in 0.093610 second(s), 23 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

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