CAB で圧縮された TEXT を解凍する

CAB で圧縮された TEXT ファイルを解凍します。

前田稔(Maeda Minoru)の超初心者のプログラム入門

プロジェクトの設定

  1. CAB ファイルを解凍して MessageBox で表示しようと思ったのですが、メモリ上に解凍する API が使えませんでした。
    そこで圧縮されたファイルを解凍して、元のファイルを作成します。
    unlha32 や cab32 は『統合アーカイバAPI仕様』に準拠していてAPIの仕様が統一されているのですが、 細かい所に違いがあり、LHA と同じようにプログラミング出来ませんでした。
  2. 新規プロジェクトで[空のプロジェクト]を作成して次のファイルを格納して下さい。
    ファイル名説明
    uncab.cpp メインプログラムファイルです
    cab32.lib LIB ファイルです
    cabapi.h LIB Header ファイルです
    file.cab file.txt を圧縮した CAB ファイルです
  3. プログラムを実行するには cab32.dll が必要です。
    カレントディレクトリまたは、C:\Windows\system32 のフォルダーに格納して下さい。
  4. Cab.cpp の全ソースコードです。
    "file.cab" が CAB ファイルの名前で "file.txt" が解凍するファイルです。
        /***********************************************************/
        /*★ CAB で圧縮された TEXT を解凍して表示する    前田 稔 ★*/
        /***********************************************************/
        #include    
        #include    "cabapi.h"
        #pragma     once
        #pragma     comment(lib,"cab32.lib")
    
        char    buf[512];
    
        //★ Windows Main 関数
        int PASCAL  WinMain(HINSTANCE hInst, HINSTANCE, LPSTR, int nCmdShow)
        {
            Cab(NULL,"-x -o -i -j file.cab c: file.txt",buf,512);
            MessageBox(NULL,(char*)buf,"UNCAB file.cab",MB_OK);
            return 0;
        }
        
  5. プログラムを実行すると file.cab が解凍されて file.txt が作成されます。
    作成された file.txt を表示して、正常に解凍されたことを確認して下さい。
  6. ファイルを解凍するのは非常に簡単で、次のコマンドを実行するだけです。
    buf[] にはコマンドの実行状況が格納されます。
    Cab(NULL,"-x -o -i -j file.cab c: file.txt",buf,512);
  7. コマンドは良く似ているのですが Unlha とは多少違います。
    コマンドの詳細は cab32xxx.exe を解凍したときに格納されている cab32cmd.TXT を参照して下さい。

【演習】

  1. CAB の使用に当たって次のような記述があります。
    それから貴方のソフトでこのDLLに対応する場合、出来るだけダイナミック
    リンク(LoadLibrary/GetProcAddress)で使用するようにして、CAB32.DLL が
    無い環境でも、(CAB関係が使えないだけで)問題なく動作するような設計に
    してください。
    
  2. LoadLibrary() と GetProcAddress() を使って解凍するプログラムを作成して下さい。
    詳細は DLL を Dyamic にリンクする を参照して下さい。
  3. cab32cmd.TXT を参照して自己解凍書庫を作成して下さい。

超初心者のプログラム入門(Win32API C++)