2006-05-28
■ [ruby] 統合アーカイバDLL
Rubyから圧縮ファイルの解凍をしたい場合、どうすればいいか。 unixならtarとかunzipとかを呼び出すのが良さそう。 じゃあ、windowsは?
ということで、Rubyから統合アーカイバDLLを呼び出すことを考えてみる。
試しにUNZIP32.DLL。
require 'Win32API'
class ZIP
  def self.version
    Win32API.new('UNZIP32.DLL', 'UnZipGetVersion', 'v', 'i').call
  end
  def self.unpack
    #int WINAPI UnZip(const HWND hWnd,LPCSTR szCmdLine,LPSTR szOutput, const DWORD dwSize);
    func = Win32API.new('UNZIP32.DLL', 'UnZip', %w(p p p i), 'i')
    ret = "\0"*256
    func.call(0, "z.zip", ret, 256)
    ret
  end
end
p ZIP.version
p ZIP.unpack
超適当だが、なんか解凍できたっぽい。
ライブラリ化するとしたらどういうインターフェイスが良いだろうか。
[ツッコミを入れる]