1

WindowsAPICodePack for C#(.Net 4)を使用してファイルシステムブラウザーを実装しようとしていますが、ShellObjectシステムがzipファイルをフォルダーとして処理することを除けば、かなりうまく機能しますが、ファイルの方が望ましいです。このように動作させる方法はありますか?それが行う低レベルの相互運用は私を超えています。

私が知る限り、内部的にはアイテムがフォルダ要素かファイルシステム要素かを尋ねます。次に、これ(およびいくつかのタイプチェック)を使用して、実際に何であるかを把握します。圧縮されている場合、ファイルとして処理するように強制しても安全ですか?それとも私は何か他のことをしなければなりませんか?

4

1 に答える 1

1

ShellNativeMethods.SFGAOさて、最初に、と呼ばれるフラグがあるのを見ましたSFGAO_COMPRESSED。これは実際には表示されていないようですが、非推奨になっている可能性がありますか?

それが失敗したので、私は最終的に不正行為をして、ShellObjectFactory.csで次のことを行いました。

下:

// Is this item a Folder?
bool isFolder = (sfgao & ShellNativeMethods.SFGAO.SFGAO_FOLDER) != 0;

追加した:

// Is this a compressed Folder?
bool isCompressedFolder = (itemType == ".zip");

そして、私は交換しました

else if (isFolder)

else if (isFolder && !isCompressedFolder)

これは完全なハックですが、うまくいくようですので、誰かがより良いアイデアを持っていない限り、私はこれに固執しています。将来、他の誰かの助けになることを願っています。WindowsAPICodePackへの投稿は非常にまれなようです。

于 2010-05-26T01:20:04.693 に答える