C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Re[2]: SHFileOperationを使ったコピーで重複警告でない


(過去ログ 177 を表示中)

[トピック内 3 記事 (1 - 3 表示)]  << 0 >>

■101651 / inTopicNo.1)  SHFileOperationを使ったコピーで重複警告でない
  
□投稿者/ Tom (1回)-(2023/03/24(Fri) 00:29:00)

分類:[C#] 

以前こちらで子プロセスでファイルコピーしたい と投稿したところ、
SHFileOperationでコピーできる方法を教えていただきました。
ただ、コピー先に重複するファイルがあった場合、強制的に上書きになってしまいます。
フラグ値を見ると「警告出さずに上書きする」ってのがあったのですが、逆がありません。
記載したコードはサンプルのまんまです(どのサイトをみても同じようなサンプルでした)

var lpFileOp64 = new SHFILEOPSTRUCT64();

lpFileOp64.hwnd = lpFileOp.hwnd;

lpFileOp64.wFunc = lpFileOp.wFunc;

lpFileOp64.pFrom = lpFileOp.pFrom;

lpFileOp64.pTo = lpFileOp.pTo;

lpFileOp64.fFlags = lpFileOp.fFlags;

lpFileOp64.fAnyOperationsAborted = lpFileOp.fAnyOperationsAborted;

lpFileOp64.hNameMappings = lpFileOp.hNameMappings;

lpFileOp64.lpszProgressTitle = lpFileOp.lpszProgressTitle;

int result = SHFileOperation64(ref lpFileOp64);

出したいダイアログはエクスプローラでファイルコピーした時にでる「ファイルの置換またはスキップ」ってやつです。

賢者の方、ご存じでしたら教えてくださいませ。
よろしくお願いいたします。
引用返信 編集キー/
■101652 / inTopicNo.2)  Re[1]: SHFileOperationを使ったコピーで重複警告でない
□投稿者/ KOZ (394回)-(2023/03/24(Fri) 00:46:34)
No101651 (Tom さん) に返信
> ただ、コピー先に重複するファイルがあった場合、強制的に上書きになってしまいます。
> フラグ値を見ると「警告出さずに上書きする」ってのがあったのですが、逆がありません。

SHFILEOPSTRUCT 構造体の fFlags メンバに FOF_NOCONFIRMATION (0x10) を指定すると警告が出なくなるので、指定しなければいいはずです。

「SHFILEOPSTRUCTW 構造体」
https://learn.microsoft.com/ja-jp/windows/win32/api/shellapi/ns-shellapi-shfileopstructw

引用返信 編集キー/
■101660 / inTopicNo.3)  Re[2]: SHFileOperationを使ったコピーで重複警告でない
□投稿者/ Tom (2回)-(2023/03/26(Sun) 12:12:04)
KOZさま
アドバイス、ありがとうございます。

>指定しなければいいはずです。
あれ? 確かにそうだよな、指定した覚えないけど??? とおもってソースを改めて追いました。
そしたら自分で設定していました。
どうもWEBで見つけたサンプルコードをコピペしてそのままにしていたようです。

どうもお騒がせしました。



解決済み
引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -