タブファイラー開発ブログ

Tablacus ExplorerやX-Finderの作者のブログ

ZIPフォルダ機能無効化でも解凍する(Tablacus Explorer)

Tablacus Explorer 14.1.27からはZIPフォルダ機能が無効化されている場合はzipfldr.dllを直接使ってZIPを解凍する機能を追加しました。 Windowsの高速化などでZIPフォルダ機能を無効化している場合には、アドオンの解凍で解凍ソフトを指定する必要があったのですが、これで指定無しでもアドオンのインストールやTablacus Explorerのアップグレードができるようになりました。 ZIPフォルダ機能無効化でCoCreateInstanceが失敗する場合はLoadLibraryでモジュールをロードしてDllGetClassObjectとIClassFactory->CreateInstanceでインスタンスを作成します。(teCreateInstance) このインスタンスからはIPersistFile、IStorage、IShellFolder2等が取得できます。 そして、IPersistFile->Loadでファイルを指定し、IStorageを使って解凍します。(teExtract) XPの場合はIEnumSTATSTGで更新日時を取得できないようなので、IShellFolder2->GetDetailsExで更新日時を取得しています。 IStorageからIEnumSTATSTGでZIPの一覧を取得していますが、IShellFolderからIEnumIDListでZIPの一覧を取得する方法も使えそうな気がします。XPの更新日時を考えるとこっちも良いかな。 詳しくはTablacus Exploerのソースをご覧ください。