In <20010924072212.3FE171BAF / dream.big.or.jp> On Mon, 24 Sep 2001 16:22:13 +0900 bind <bind / dream.big.or.jp> wrote: > CDなどドライブに割り振られている、 > Volume Labelを取得する方法を模索しているのですが、 > 良い方法が思い浮かばず困っております。 > > 何か良い方法は無いでしょうか? ちょっと調べてみて、ちゃちゃっと作ってみたところこんな感じに なりました。 適当なキーワードで使えそうなAPIの関数名を調べて、MoonWolfさんの http://www.moonwolf.com/ruby/ にあるWin32ModuleでWin32API.newの 引数を調べて、実際に使ってみるという手順で作りました。 require 'Win32API' GetVolumeInformationA = Win32API.new('kernel32','GetVolumeInformationA', 'PPLPPPPL','I') rootpathname = ARGV.shift || 'C:\\' volume_name = ' '*1000 system_name = ' '*1000 sizeof_long = 4 serial_number = ' ' * sizeof_long filenamelen = ' ' * sizeof_long flags = ' ' * sizeof_long p GetVolumeInformationA.call(rootpathname, volume_name, 1000, serial_number, filenamelen, flags, system_name, 1000) p [volume_name.strip, system_name.strip, serial_number, filenamelen, flags] p volume_name[/^[^\0]*/] > File.stat(path).volumename とか > DOSish.volumename(path) > > なんてのがあると嬉しかったんですが。 Apolloには何かあるかも。 -- |ZnZ(ゼット エヌ ゼット) |西山和広(Kazuhiro NISHIYAMA)