呼叫外部程式搬移一群檔案 |
尚未結案
|
ak06407
一般會員 ![]() ![]() 發表:7 回覆:9 積分:8 註冊:2003-07-10 發送簡訊給我 |
|
Fishman
尊榮會員 ![]() ![]() ![]() ![]() ![]() ![]() 發表:120 回覆:1949 積分:2163 註冊:2006-10-28 發送簡訊給我 |
|
yorkland
高階會員 ![]() ![]() ![]() ![]() 發表:2 回覆:138 積分:108 註冊:2004-12-17 發送簡訊給我 |
不好意思, 我忘了是在那一篇文章看到以下的內容。
我覺得比直接在背景執行command的效果好太多了。
它也提供move, copy..等功能, 過程中還會出現Windows預設的動畫視窗。
提供給你參考。 // 程式中Runtime複製檔案, 但又希望能出現畫面的進度畫面。
// 遇到大檔案搬移或複製時, 才不會不知道進度為何?
{$EXTERNALSYM FO_MOVE}
FO_MOVE = $0001;
{$EXTERNALSYM FO_COPY}
FO_COPY = $0002;
{$EXTERNALSYM FO_DELETE}
FO_DELETE = $0003;
{$EXTERNALSYM FO_RENAME}
FO_RENAME = $0004; var
Fos : TSHFileOpStruct;
p : pchar;
sDest : PChar; //string;
begin
// sDest := PChar(Edit2.Text+FormatDateTime('yyyymmdd', Date));
FillChar(Fos, sizeof(Fos), #0);
with Fos do begin
Wnd := Handle;
wFunc := FO_COPY;
pFrom := ''; // PChar(Edit1.Text);
pTo := ''; // sDest;
fFlags := 0;
end;
if ((SHFileOperation(Fos) <> 0) or
(Fos.fAnyOperationsAborted <> false)) then
ShowMessage('作業取消');
end;
|
ak06407
一般會員 ![]() ![]() 發表:7 回覆:9 積分:8 註冊:2003-07-10 發送簡訊給我 |
|
yorkland
高階會員 ![]() ![]() ![]() ![]() 發表:2 回覆:138 積分:108 註冊:2004-12-17 發送簡訊給我 |
var
Fos: TSHFileOpStruct;
Str1: String;
Str2: String;
Str3: String; begin
Str1:='C:\Temp\Test1.zip'; // 第一個要複製的檔案
Str2:='C:\Temp\Test2.zip'; // 第二個要複製的檔案
Str3:='C:\Temp\Test3.zip'; // 第二個要複製的檔案
Fos.Wnd:=Handle;
Fos.wFunc:=FO_COPY;
// 我試過 Fos.pForm:='C:\Temp\*.zip'; 這樣也可以
// 多檔案間要以#0分隔, 最後要加二個#0
Fos.pFrom:=PChar(Str1 #0 Str2 #0 Str3 #0 #0);
// 指定新的目錄
Fos.pTo:='C:\Temp\Test2\';
// 以下這行就會產生複製的動畫
// Fos還有Flag可做設定..
SHFileOperation(Fos);
ShowMessage('Completed');
end;
|
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |