Common Archivers Library
からCAB32.DLL 開発者 SDK v0.98をダウソしましゅ。

展開して、cab32.dllを、システムホルダに投入します。

ABのプロジェクトでウインドウにリストボックス(ID=ListBox1)とボタン(ID=CommandButton1)
だけの画面を作ります。このとき、MainWndの拡張スタイルでドラッグ&ドロップを許可にします。

イカのコードをコピペします。終わり。
'-----------------------------------------------------------------------------
'  イベント プロシージャ
'-----------------------------------------------------------------------------
' このファイルには、ウィンドウ [MainWnd] に関するイベントをコーディングします。
' ウィンドウ ハンドル: hMainWnd

' TODO: この位置にグローバルな変数、構造体、定数、関数を定義します。
Declare Function Cab Lib"cab32" (hwnd As HWND, cmdl As *Byte, outp As *Byte, si As DWord) As Long

Const CabCmd = "-a -ml:21"
Const ResFile = "平井公彦.log"
Const CabFile = "平井公彦.cab"

'-----------------------------------------------------------------------------
' ウィンドウメッセージを処理するためのコールバック関数

Function MainWndProc(hWnd As HWND, dwMsg As DWord, wParam As WPARAM, lParam As LPARAM) As DWord
  ' TODO: この位置にウィンドウメッセージを処理するためのコードを記述します。

  ' イベントプロシージャの呼び出しを行います。
  MainWndProc=EventCall_MainWnd(hWnd,dwMsg,wParam,lParam)
End Function


'-----------------------------------------------------------------------------
' ここから下は、イベントプロシージャを記述するための領域になります。

Sub MainWnd_Destroy()
  Cab2_DestroyObjects()
  PostQuitMessage(0)
End Sub

'ダロップ
Sub MainWnd_DropFiles(hDrop As HDROP)
  Dim k As Long, j As Long
  Dim file[MAX_PATH] As Byte
  k = DragQueryFile(hDrop, -1,NULL,0)
  For j=0 To k-1
    DragQueryFile(hDrop,j,file,MAX_PATH)
    SendMessage(GetDlgItem(hMainWnd,ListBox1), LB_ADDSTRING, 0, file)
  Next
  DragFinish(hDrop)
End Sub

'圧縮ボタン
Sub MainWnd_CommandButton1_Click()
  Dim ccmd[1000] As Byte
  Dim re[1000] As Byte
  Dim f[MAX_PATH] As Byte
  Dim hF As HANDLE
  Dim w As DWord,j As Long, k As Long,l As Long

  'レスポンスファイルを作る
  hF = CreateFile(ResFile, GENERIC_WRITE, 0, ByVal 0, CREATE_ALWAYS,FILE_ATTRIBUTE_NORMAL,0)
  k = SendMessage(GetDlgItem(hMainWnd, ListBox1), LB_GETCOUNT,0,0)
  For j=0 To k-1
    l = SendMessage(GetDlgItem(hMainWnd, ListBox1),LB_GETTEXT,j,f)  
    wsprintf(ccmd, Ex"\q%s\q\r\n", f)
    WriteFile(hF, ccmd, lstrlen(ccmd), VarPtr(w), ByVal 0)
  Next
  CloseHandle(hF)

  'Cab実行
  wsprintf(ccmd, "%s %s @%s", CabCmd, CabFile, ResFile)
  Cab(hMainWnd, ccmd, re, 999)
  Kill ResFile
  MessageBox(hMainWnd, re, "mes", MB_OK)
End Sub

注意:プロジェクト名をCab2にしないとコンパイルが通らないという猛烈なバグがあります。