私はこれを数時間正しくすることに取り組んでおり、WindowsVistaとWindows7で完全に機能しますが、Windows XPで実行すると、メッセージなしで失敗します。残念ながら、私はXPでの開発環境を持っていないので、デバッガーを介してそれを実行してチェックすることはできません。同じコードが実際にCopyFile
データを書き出すためにといくつかのコマンドを使用してC:\
いるので、それがパーミッションエラーである場合、それは奇妙なものです。
編集:戻り値は1223で、ERROR_CANCELLED
これはユーザーによってキャンセルされたことを意味します。
編集2:s.fFlagsを無効にすると、すぐにダイアログボックスが表示され、dir-test
フォルダを作成するかどうかを尋ねられたので、に切り替えてFOF_NOCONFIRMATION
、フラグを無視しているように見えました。同じ方法で削除するときにも使用するSHFileOperation
ので、ファイルのコピーには適用されません。
LPTSTR source = L"dir-test\\*\0";
LPTSTR dest = L"C:\\dir-test\0";
SHFILEOPSTRUCT s = { 0 };
s.hwnd = 0;
s.wFunc = FO_COPY;
s.fFlags = FOF_SILENT;
s.pTo = dest;
s.pFrom = source;
int n;
n = SHFileOperation(&s);`