掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
ディレクトリのコピーにSHFileOperationを利用するとき (ID:55850)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
またまたすみません。 ディレクトリを丸まるコピーするのに、SHFileOperationを使って行おうと思っています。 外部の関数として作成していて、WinMain関数でiniファイルからコピー元とコピー先を取得し以下の関数のなかで、コピーを実行しています。 BOOL CopyDirectory(HWND hWnd, LPCTSTR From, LPCTSTR To) { SHFILEOPSTRUCT TSHFileOpStruct; ZeroMemory(&TSHFileOpStruct,sizeof(SHFILEOPSTRUCT)); MessageBox(NULL, From, To, MB_OK); //構造体の初期設定 TSHFileOpStruct.hwnd = hWnd; //親ウインドウのハンドル TSHFileOpStruct.wFunc = FO_COPY; //フラグ lstrcpy((LPTSTR)From, TSHFileOpStruct.pFrom); //対象元パス lstrcpy((LPTSTR)To, TSHFileOpStruct.pTo); //対象先パス TSHFileOpStruct.fFlags = FOF_MULTIDESTFILES; //フラグ MessageBox(NULL, TSHFileOpStruct.pFrom, TSHFileOpStruct.pTo, MB_OK); //実行する if(SHFileOperation(&TSHFileOpStruct) != 0) { return FALSE; } if(TSHFileOpStruct.fAnyOperationsAborted == TRUE) { return FALSE; } return TRUE; } 現在ではデバッグのためにFromとToがSHFILEOPSTRUCT構造体にわたっているかを見る用のMessageBox関数があります(将来的には消します)。 このMessageBoxでは、FromおよびToは正しく表示されているのですが、いざSHFileOperationを実行すると、パスがうまくわたっていないらしく、「送り側のファイルまたはディスクから読み取れません」と出てしまいます。 なお、この送り側のディレクトリを直接 TSHFileOpStruct.pFrom = "送り側のディレクトリ"; と記述するとコピーできます。 また TSHFileOpStruct.pFrom = From; とやっても、同様のエラーが出ました。 ちなみに、コピー元のディレクトリはサーバ上にあり \\サーバ名\ディレクトリ名\ となっています。 何か原因が分かる方いらっしゃいませんか? よろしければ、ご教授いただければと思います。
←解決時は質問者本人がここをチェックしてください。
更新する
戻る
掲示板システム
Copyright 2021 Takeshi Okamoto All Rights Reserved.