SHFileOperation()を用いた重複ファイルの処理 – プログラミング – Home

通知
すべてクリア

SHFileOperation()を用いた重複ファイルの処理


SA
 SA
(@SA)
ゲスト
結合: 22年前
投稿: 17
Topic starter  

いつもお世話になっております。

今回は、SHFileOperation()関数を使用しディレクトリのコピーをしようとしています。

その中で、既にコピー先に同じファイル名があった場合、
重複しないファイル名をつけるフラグを使用しました。

ここまでは良かったのですが、SHFileOperation()関数がつけた、
重複しないファイル名の取得で困っています。

同じファイル名が存在したために、
新しいファイル名がつけられた場合に、SHNAMEMAPPING構造体の配列を含んだ、ファイル
名マッピングオブジェクトのハンドルがhNameMappingsメンバが格納されます。

と書いてあったのですが、ハンドルは取得できたのですが、
その後どのようにすれば取得できるのかが分かりません。

お手数ですが、是非ご教授ください。

環境:WindowsXP SP1
開発:VC++6.0

以上、よろしくお願い致します。


引用解決済
トピックタグ
dairygoods
 dairygoods
(@dairygoods)
ゲスト
結合: 23年前
投稿: 1421
 

最新のMSDNには解説がありますね。

http://msdn.microsoft.com/library/en-
us/shellcc/platform/shell/reference/structures/shfileopstruct.asp


返信引用
SA
 SA
(@SA)
ゲスト
結合: 22年前
投稿: 17
Topic starter  

早速のご回答ありがとうございます。

MSDNの解説を元に試してみたのですが、
とりあえずファイル名の取得は出来ました。

ただ取得したファイル名が文字化け?しております。

例.
実際のディレクトリ:
C:\コピー~Test
取得したディレクトリ名(デバックで確認した内容):
C:\ウヤ^Test

このようになってしまいました。
プログラム内で正しく、この場合、C:\コピー~Test
という文字列を取得するにはどのようにすればよろしいのでしょうか?

よろしくお願い致します。


返信引用
dairygoods
 dairygoods
(@dairygoods)
ゲスト
結合: 23年前
投稿: 1421
 

MSDNによると、
SHFILEOPSTRUCTは実際のところ、
Win95系では、SHFILEOPSTRUCTA (ANSI版)
WinNT系では、SHFILEOPSTRUCTW (Unicode版)
であると書いてありますけど、その対応をしていますか?


返信引用

返信する

投稿者名

投稿者メールアドレス

タイトル *

プレビュー 0リビジョン 保存しました
共有:
タイトルとURLをコピーしました