いつもお世話になります。標題のAPIを使って,フォルダごとコピーするツールを作っています。
with foStruct do begin
wnd := Handle;
wFunc := FO_COPY;
pFrom := PChar(SrcFolder + '\*.*' + #0);
pTo := PChar(DstFolder + '\' + #0);
fFlags := FOF_ALLOWUNDO;
fAnyOperationsAborted := False;
hNameMappings := nil;
lpszProgressTitle := nil;
end;
SHFileOperation(foStruct);
と,ここまではいいのですが,二度目以降は上書き確認ダイアログが表示されてしまいます。また,あらかじめ削除しておくことも考えて
with foStruct do begin
wnd := Handle;
wFunc := FO_DELETE;
pFrom := PChar(DstFolder + '\*.*' + #0);
fFlags := 0;//FOF_ALLOWUNDO;
fAnyOperationsAborted := true;
hNameMappings := nil;
lpszProgressTitle := nil;
end;
SHFileOperation(foStruct);
というの作ったのですが,こちらも削除確認のダイアログが出てしまいます。このツールはタイマーイベントで無人実行したいのですが,問答無用で上書きする方法はないでしょうか?
これかい?
fFlags := FOF_NOERRORUI;
> 上書き確認ダイアログが表示されてしまいます
fFlags := fof_NOCONFIRMATION;
> 削除確認のダイアログが出てしまいます
fFlags := fof_ALLOWUNDO or fof_NOCONFIRMATION;
詳しくは次を参照してください
(公式)
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/shellcc/platform/shell/reference/structures/shfileopstruct.asp
(日本語)
http://yokohama.cool.ne.jp/chokuto/urawaza/struct/SHFILEOPSTRUCT.html
「FOF_ALLOWUNDO」でグーグル検索するだけで、さどやまさん紹介の日本語のほうが、上位にひっかかりますね
さどやまさんに紹介いただいたサイトで理解できました。ありがとうございました。
ツイート | ![]() |