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
超適当だが、なんか解凍できたっぽい。
ライブラリ化するとしたらどういうインターフェイスが良いだろうか。
[ツッコミを入れる]