KBA.DLLの簡単な使い方

以前unlhacom.dllという名前だったのですが、「同じ名前のものがある」ということがわかり
名前を変え、さらに各種アーカイブDLLに対応しています。

このドキュメントは以前のUNLHACOMのものを元にしているので、記述に間違いがあるかも...

メールか掲示板でお知らせください。


各種アーカイブDLL(ex.UNLHA32.DLLなど)を呼び出すActiveX DLLです。
基本的にそれほどたいしたことしているわけではありません。(^_^;)
ただただDLLの宣言をいちいちするのが面倒なのと、ActivePerlやASPからLHAを扱いたかっただけなのです。
(と思っていたら、ActivePerlでもDLLが直接呼べるのでした...。なんてこったい)

各種アーカイバDLLの詳細については 統合アーカイバ・プロジェクト 統合アーカイバ・プロジェクト をご参照ください。

リリース履歴

1999/1/27 : KBAとして出直し、Ver.0.01 (ベータ) 

ここまではUNLHACOM.DLLという名前でした

1998/12/ 7 : Ver.1.50 ベータ 
    クラスの一本化
    ASPからも変数で呼び出せるように変更
    LhaVer→Verに名称を変更
    メソッドの追加
1998/12/ 1 : Ver.1.00 改訂版 
    ArcOriginalSizeの名前を修正、ArcAPIでのエラー処理の追加
1998/11/30 : Ver.1.00

インストール・アンインストール

VBで作ったActiveX DLLです。VB6のランタイムが必要です。

インストール

(1)ファイルをPATHがとおっている場所(ex. c:\windows\systemとか)にコピーします。
(2)「ファイル名を指定して実行」から「regsvr32」で登録します。
  regsvr32 c:\windows\system\kba.dll

アンインストール

(1)あとはファイル名を指定して実行から「regsvr32」を削除します。
  regsvr32 /u c:\windows\system\kba.dll

プログラム例


VBAによるプログラム例

Excel VBAによって呼び出す場合のプログラム例です。

Option Explicit
'簡単なプログラム
Sub LhaTest()
'変数宣言
    Dim oLha As KBA.UNLHA   'UnLha系APIのオブジェクト
    Dim sRes As String              'LHAの結果を取得するための領域
    'オブジェクトの作成
    Set oLha = CreateObject("KBA.UNLHA")
    'UNLHA32.DLLのバージョンを表示
    MsgBox "Ver.:" & oLha.Ver
    
    '圧縮の実行
    oLha.ArcCmd "a -rx c:\test c:\autoexec.bat c:\config.sys", sRes
    MsgBox sRes     '実行結果の表示
    'ファイルがLHA形式かをチェック
    MsgBox oLha.CheckArchive("c:\test.lzh")
    '格納ファイルの数を取得
    MsgBox oLha.FileCount("c:\test.lzh")

'LHAファイルの指定
    oLha.OpenArc "c:\t12.lzh"
    nRow = 1

    nRes = oLha.FindFirst("*")                        'ファイルの検索
    Do While nRes = 0
        nRow = nRow + 1
    '格納ファイルの情報
        With ActiveSheet
            .Cells(nRow, 1) = oLha.FileName     '格納ファイル名
            .Cells(nRow, 2) = oLha.FileTime     '日時
            .Cells(nRow, 3) = oLha.FileAttr     '属性
            .Cells(nRow, 4) = oLha.FileMode     'モード(メソッド)
            .Cells(nRow, 5) = oLha.OriginalSize 'サイズ
            .Cells(nRow, 6) = oLha.CompressedSize   '圧縮後サイズ
            .Cells(nRow, 7) = oLha.Ratio            '圧縮率
            
        End With
        nRes = oLha.FindNext    '次の格納ファイルを検索
    Loop
    '書庫ファイル全体の情報
    nRow = 1
    With ActiveSheet
        .Cells(nRow, 1) = oLha.ArcName              '書庫ファイル名
        .Cells(nRow, 2) = oLha.ArcDateTime          '日時
        .Cells(nRow, 5) = oLha.ArcOrginalSize       '元の大きさ
        .Cells(nRow, 6) = oLha.ArcCompressedSize    '圧縮後サイズ
        .Cells(nRow, 7) = oLha.ArcRatio             '圧縮率
    End With
    oLha.CloseArc
End Sub

ASPによるプログラム例

ASPによって呼び出す場合のプログラム例です。

<HEAD>
<META HTTP-EQUIV="Content-Type" content="text/html; charset=x-sjis">
<TITLE>LHA Sample</TITLE>
</HEAD>
<BODY>
<H1>LHAファイルの内容</H1>
<script Language="VBScript" RUNAT="Server">
Sub RunLHA ()
  Dim oLha
  Dim nRow
  Dim sFile
  Dim sCmd
  Dim nArc
  Dim oFile

'オブジェクトの作成
  Set oLha = CreateObject("KBA.UNLHA")
  sArc = "c:\test1.lzh"

'書庫ファイルを削除しておく
  Set oFile = CreateObject("Scripting.FileSystemObject")
  If oFile.FileExists(sArc) then
    oFile.DeleteFile(sArc) 
  End If
  Set oFile = Nothing

'バージョンの表示
  Response.Write "Version:" & oLha.Ver & "<BR>"       'バージョン

'基本的なメソッド
  Response.Write "コマンドによる書庫ファイルへの追加"
  sCmd = "a " & sArc & " *.bat"
  oLha.ArcCmd(sCmd)
  Response.Write "<PRE>" & oLha.ArcRes & "</PRE>"


'OpenArc系の処理
  If (Not oLha.OpenArc(sArc)) then
      Response.Write("OPEN NG")
      Exit Sub
  End If

  nRes = oLha.FindFirst("*")                  'ファイルの検索    
  Response.Write("<TABLE BORDER><TR>" & _
                "<TH>ファイル名</TH>" & _
                "<TH>日時</TH>" & _
                "<TH>属性</TH>" & _
                "<TH>モード</TH>" & _
                "<TH>サイズ</TH>" & _
                "<TH>圧縮サイズ</TH>" & _
                "<TH>圧縮率</TH>" & _
                "</TR>")
    Do While nRes = 0
        nRow = nRow + 1    '格納ファイルの情報        
        Response.Write("<TR>")
        Response.Write("<TD>" & oLha.FileName & "</TD>" )       '格納ファイル名
        Response.Write("<TD>" & oLha.FileTime & "</TD>" )       '日時
        Response.Write("<TD>" & oLha.FileAttr & "</TD>" )       '属性
        Response.Write("<TD>" & oLha.FileMode & "</TD>" )       'モード
        Response.Write("<TD>" & oLha.OriginalSize & "</TD>" )   'サイズ
        Response.Write("<TD>" & oLha.CompressedSize & "</TD>" ) '圧縮サイズ
        Response.Write("<TD>" & oLha.Ratio & "%</TD>" )         '圧縮率
        Response.Write("</TR>")
        nRes = oLha.FindNext    '次の格納ファイルを検索
   Loop
    '書庫ファイル全体の情報
  Response.Write("<TR>")
  Response.Write("<TD>" & oLha.ArcName & "</TD>" )      '書庫ファイル名
  Response.Write("<TD>" & oLha.ArcDateTime & "</TD>" )  '日時
  Response.Write("<TD> </TD>" )                   'ダミー
  Response.Write("<TD> </TD>" )                   'ダミー
  Response.Write("<TD>" & oLha.ArcOriginalSize & "</TD>" )      'サイズ
  Response.Write("<TD>" & oLha.ArcCompressedSize & "</TD>" )    '圧縮サイズ
  Response.Write("<TD>" & oLha.ArcRatio & "%</TD>" )    '圧縮率
  Response.Write("</TR>")
  oLha.CloseArc
  Set oLha = Nothing
End Sub
'LHAの実行
RunLHA
</script>
</BODY>
</HTML>

ご意見、ご質問はこちらの掲示板で受け付けています。 またメールは河馬屋(Nifty)にお願いします。


トップページ