SHFileOperationの使い方

解決


komin  2007-04-03 17:56:10  No: 25583  IP: 192.*.*.*

いつもお世話になります。標題の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);

  というの作ったのですが,こちらも削除確認のダイアログが出てしまいます。このツールはタイマーイベントで無人実行したいのですが,問答無用で上書きする方法はないでしょうか?

編集 削除
orz  2007-04-03 18:17:50  No: 25584  IP: 192.*.*.*

これかい?
fFlags := FOF_NOERRORUI;

編集 削除
さどやま  URL  2007-04-03 23:34:21  No: 25585  IP: 192.*.*.*

> 上書き確認ダイアログが表示されてしまいます
    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

編集 削除
おや?  2007-04-04 08:11:26  No: 25586  IP: 192.*.*.*

「FOF_ALLOWUNDO」でグーグル検索するだけで、さどやまさん紹介の日本語のほうが、上位にひっかかりますね

編集 削除
komin  2007-04-04 09:09:19  No: 25587  IP: 192.*.*.*

さどやまさんに紹介いただいたサイトで理解できました。ありがとうございました。

編集 削除