怎样才知道文件是否复制完成?(100分)

  • 主题发起人 主题发起人 kanble
  • 开始时间 开始时间
K

kanble

Unregistered / Unconfirmed
GUEST, unregistred user!

请问各位高手,我下面的这段程序有什么错误,一直达不到我的结果,
Var
lngProcessID:longint;
lngHwnd:HWnd;
Crun:string;
Crun := C:/temp/xcopy+ ' ' + c:/temp/+ 'USER.TXT ' + ' ' +
d:/temp/+ 'USER.TXT';
LngProcessID:=WinExec(pchar(c:/temp/command.com /c + ' ' + Crun),SW_SHOWNORMAL);
//这里主要是将一个文件复制到一个虚拟目录中,比较慢,
lngHwnd:=openprocess(synchronize,false, lngProcessID);
Waitforsingleobject(lngHwnd, infinite) ;
try
while Waitforsingleobject(lngHwnd, 0)<>WAIT_OBJECT_0do
begin
Waitforsingleobject(lngHwnd, 0) ;
end;
finally
if Waitforsingleobject(lngHwnd, 0)=WAIT_OBJECT_0 then
begin
showmessage('传送完成!');
result:=true;
end
else
begin
MessageDlg('传送文件失败!',mtWarning,[mbYes],0);
result:=false;
end;
end;
//
Closehandle(lngHwnd);
end;

我的目的是文件传送完后可以显示一个信息,但我不知道这个Waitforsingleobject(lngHwnd, 0)结束时的值是什么?
在DELPH中,当执行一个外部命令时,文件还没有传送完,程序已经执行一条语句,我主要是想当
上一个文件传送成功后才执行一句,

 
怎么那么多Waitforsingleobject啊,我记得只要判断一次就可以了啊
大富翁的下在资料中有很多这样的文章的啊
 
不行吧。告诉你返回变量也没用(其实 Delphi 帮助上有)。LngProcessID 值只要成功
执行返回的只是一个表示成功,除非没有成功。你的代码明显成功的话,截住它有吗用?
 
为什么一定要用 Command 拷贝呢?API 不是很好用吗?
直接用 SHFileOperation 不就可以啦?
 
是呀,为什么要用外部命令呢?
TFileStream的SaveToStream不很简单吗?
 
其实我真正的用法不是这样的,需要调用一个EXE,这个EXE主要是将文件拷贝到<手持电脑中>
但这个手持电脑里不是一个真正的驱动器,所以要用DOS的外部命令.在调用外部命令时,复制
文件很慢,当还没有复制完时,程序已执行到一句.不能判断文件是否已经复制成功.
 
关注!
有一次我是从光盘中考文件到硬盘上,速度无法控制。
同一样的代码在不同机器执行的结果不一样。
机器的档次相当,只是品牌不同!
尤其是联想,每次都是这样,程序跑完了,文件还是没考过去
 
查有关建立管道的例子。通过重定向管道,抓管道信息,应该可以判断do
s 执行结果。
 
后退
顶部