Windosで、CD(DVD)トレイを開閉する

結構悩んでしまった、
CD/DVDトレイ開閉スクリプト - IT生活向上ブログ

wmp = WIN32OLE.new 'WMPlayer.OCX'
f = wmp.cdromcollection.getByDriveSpecifier('F:')
f.eject
f.eject

「F:」は光学ドライブのドライブレター、手元ではそうでした。
同じドライブオブジェクトに対し ejectメソッドを繰り返すとトレイが閉じます、オブジェクトを作り直してしまうと閉じなくなるの注意。そのときは二度 eject呼ぶと閉じます。

一行スクリプトで閉じるならこんな感じか

WIN32OLE.new('WMPlayer.OCX').cdromCollection.item(0).tap{|f|f.eject}.eject

そして WIN32OLE.new('WMPlayer.OCX')オブジェクトや、WIN32OLE.new('WMPlayer.OCX').cdromCollectionオブジェクトが捕まえてる間はドライブの電源を切れなかったり。

http://www.microsoft.com/japan/technet/scriptcenter/resources/qanda/apr06/hey0417.mspx

そしてトレイを開いたり閉じたりする(一行)スクリプト、もうドライブ指定しなくていいじゃん、それっぽいの最初で。

光学ドライブトレイを開く

eject.rb

require 'win32ole'
WIN32OLE.new('WMPlayer.OCX').cdromCollection.item(0).eject

光学ドライブトレイを閉じる

tceje.rb

require 'win32ole'
WIN32OLE.new('WMPlayer.OCX').cdromCollection.item(0).tap{|cd| cd.eject}.eject