SHFileOperation 関数について

解決


バガボンド  2004-03-07 12:02:03  No: 82447  IP: [192.*.*.*]

SHFileOperation 関数にて、FOF_WANTMAPPINGHANDLE フラグを指定すると、 hNameMappings メンバにはファイル名マッピングオブジェクトのハンドルが格納されるのですが、このハンドルから変更されたファイルの古いファイル名と新しいファイル名の取得方法がよくわかりません。
なにかサンプルになるようなコード等お待ちしております。
よろしくお願いします。

編集 削除
魔界の仮面弁士  2004-03-07 18:31:50  No: 82448  IP: [192.*.*.*]

hNameMappingsに渡されるハンドルは、ある構造体のポインタです。
(この構造体自体は、SDK中では定義されていないようです)

この構造体は、8バイトのサイズを持っていて、
最初の32bitは、SHNAMEMAPPING構造体の配列数を表すUnsigned Integer、
次の32bitは、SHNAMEMAPPING構造体配列の先頭ポインタを示しています。

なお、FOF_WANTMAPPINGHANDLE指定時は、最後に SHFreeNameMappings APIを
使って、hNameMappingsに渡されたハンドルを解放するようにしてください。


> なにかサンプルになるようなコード等お待ちしております。
そちらの開発環境が全くわかりませんので、サンプルではなく、
参考になりそうな資料だけを併記しておきます。

《VB5/VB6向け》
[Win32 APIパズルブック] 31. ファイル処理 Part 2
http://www.amazon.co.jp/exec/obidos/ASIN/4881357905/

《HSP向け》
http://yokohama.cool.ne.jp/chokuto/urawaza/struct/SHFILEOPSTRUCT.html

# VB.NET向けの資料は見つかりませんでしたが、処理の流れは同じなので、
# 上記の資料を参考にすれば、処理方法もわかるかと思います。

編集 削除
バガボンド  2004-03-10 11:55:26  No: 82449  IP: [192.*.*.*]

>hNameMappingsに渡されるハンドルは、ある構造体のポインタです。
>(この構造体自体は、SDK中では定義されていないようです)
定義されていなかったんですね・・・。

>この構造体は、8バイトのサイズを持っていて、
>最初の32bitは、SHNAMEMAPPING構造体の配列数を表すUnsigned Integer、
>次の32bitは、SHNAMEMAPPING構造体配列の先頭ポインタを示しています。
上記情報を元に何とか取得できるようになりました。
連絡遅くなりましたが、ありがとうございました。

編集 削除