Win32APIを利用して、ファイルの圧縮、解凍

[戻る]
kenji 2006/12/27(水) 00:57:19
VC6.0を使っています。
圧縮、解凍を行うDLLはいくつか存在しますが、
Microsoftが提供するWin32APIのみ
を利用して、圧縮、解凍を行うことは可能でしょうか?
ぜひ方法を教えてください。

また、もし無理だということならば、圧縮、解凍を実装
するにあたり、役に立ちそうなアルゴリズム等の情報が
あれば教えてください。

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

シャノン 2006/12/27(水) 09:22:13
> 圧縮、解凍を行うDLLはいくつか存在しますが、
> Microsoftが提供するWin32APIのみ
> を利用して、圧縮、解凍を行うことは可能でしょうか?

Win32API では不可能です。
解凍だけなら LZ32.DLL という DLL にいくつかの関数がありますが、これらの関数で解
凍できる形式はほとんど使われません。
また、Microsoftが提供するCabinet SDKというヤツでCAB形式の圧縮・解凍を行うアプリ
を作ることはできますが、Win32 APIとは違いますね。

> また、もし無理だということならば、圧縮、解凍を実装
> するにあたり、役に立ちそうなアルゴリズム等の情報が
> あれば教えてください。

圧縮・解凍を一から実装しようということですか?
たとえば、zlib なんていう既存のライブラリをスタティックリンクすれば、他に DLL 
を必要とせずに圧縮・解凍を行うこともできるでしょうが、そうではなく、圧縮・解凍
ルーチンを自分で書くということ?

だったらこのへん
http://www.01-tec.com/
がいいかも。

ITO 2006/12/27(水) 10:42:44
「LZOpen」,「LZCopy」,「LZClose」等の関数がありますが、
「*.LZH」・「*.ZIP」・「*.CAB」とは違うものですね。

LHAだったら、LHA32のDLL
ZIPだったらシャノンさんのご意見どおり「zlib」を使うのがいいと思います。

シャノン 2006/12/27(水) 12:37:14
> LHAだったら、LHA32のDLL
> ZIPだったらシャノンさんのご意見どおり「zlib」を使うのがいいと思います。

いやー、「外部 DLL を使わずに」という御注文ですからね。
LHA32.DLL が許容できるんでしたら ZIP32J.DLL をお勧めしますよ。

ちなみに、LHA32.DLL を使わずに LZH の圧縮、解凍ルーチンを実装しているアプリは、
LHa for Unix のソースコードを流用している場合が多いようです。
ZIP は Info-Zip というサイトでソースコードが手に入りますし、TAR32.DLL もソース
コードが公開されています。

古いスレッドには追加発言できません。