スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。
 

ファイル処理の調整(X-Finder/Tablacus Explorer)

今回のファイル処理の調整では、古いAPIのSHFileOperationの代わりに後継のインターフェイスであるIFileOperationが使えれば使う様にしました。

サイズの巨大なファイルやネットワークを使う場合に設計が古いSHFileOperationでは無駄にキャッシュをしたりして遅くなってしまっていたのが、IFileOperationでは解消されて結構速くなるとのことです。

とはいってもSHFileOperationとIFileOperationでは使い方が結構違うので、X-Finder/Tablacus ExplorerではIFileOperationでSHFileOperationをエミュレートする関数を作成して置き換えることにしました。

Tablacus Explorerのソース(TE.cpp)ではteSHFileOperationというのがその関数になります。

完璧なエミュレートという訳ではないですが、手軽に差し替えできますし、MIT ライセンスなので勝手に使って頂いて構いません。

※戻り値が成功が0(S_OK)というの以外は違っていたり、ワイルドカードやFOF_WANTMAPPINGHANDLEを指定した場合はAPIのSHFileOperationを実行します。

X-FinderでもDelphi 6でほとんど同じような関数を作成しています。

工夫している点としてはFO_MOVEでFOF_MULTIDESTFILESの際に同一フォルダであれば、移動ではなく名前の変更で処理している所です。そのため、X-FinderのNumbering:を使った連番化で、今までは元に戻すの表示が「元に戻す - 移動」だったのが「元に戻す - 名前の変更」になりました。
スポンサーサイト
 

コメント

このコメントは管理人のみ閲覧できます
2014/ 09/ 29( 月) 03: 24: 19| | # [ 編集 ]
 
リンクを直しました。報告ありがとうございました。
2014/ 09/ 29( 月) 19: 01: 33| URL| 楽# -[ 編集 ]
 

コメントの投稿

  • URL
  • コメント内容
  • password
  • 秘密
  • 管理者にだけ表示を許可する

トラックバック

トラックバックURL: http://gakana.blog34.fc2.com/tb.php/93-e0bca4e2
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。