- 締切済み
VBSでCDトレイのオープン/クローズのコーディング方法わかりません。
VBSでCDトレイのオープン/クローズのコーディング方法わかりません。 Excel for VBA では出来ましたが、VBSで作りたいのです。 http://www.mhl.janis.or.jp/~winarrow/vbscript/htm/vbs230.htm を見ると、VBSではDeclareが使えないようですね。 やり方がわかる方がいましたら、よろしくお願いします。 ----------- [Excel for VBA] Public Declare Function mciSendString Lib "winmm.dll" Alias "mciSendStringA" (ByVal lpstrCommand As String, ByVal lpSectorsPerCluster As String, ByVal uReturnLength As Long, ByVal hwndCallback As Long) As Long Sub CD_Open() Ret = mciSendString("set cdaudio door open", vbNullString, 0, 0) End Sub Sub CD_Close() Ret = mciSendString("set cdaudio door closed", vbNullString, 0, 0) End Sub -----------
- みんなの回答 (2)
- 専門家の回答
みんなの回答
- Wendy02
- ベストアンサー率57% (3570/6232)
VBSで、Win32APIを動かす方法もあったけれども、会社などでは、ツールを搭載することになるので簡単には行きませんから、このようにすれば出来るのではないかと思います。 ''VBScript Dim oWMP Dim colCDROMs Dim i Set oWMP = CreateObject("WMPlayer.OCX.7" ) Set colCDROMs = oWmp.cdromCollection For i = 0 to colCDROMs.Count - 1 colCDROMs.Item(i).Eject Next MsgBox "キーを押してください。" & vbCrLf & _ "CD トレイが閉じます。", 0 + 64, "CDトレイの開閉" For i = 0 to colCDROMs.count -1 colCDROMs.Item(i).Eject Next set oWmp = Nothing set colCDROMs = Nothing WScript.Quit
- utakataXEX
- ベストアンサー率69% (711/1018)
3つほど書きますが、自分では検証していないのでご参考までに。 1. WMI 確かに、WSH(VBScript,JScript)から Win32 APIを直接呼び出す事はデフォルトではできません。 それを代替する機能(と言うか新しいメソッド)として、WMI があります。 この場合は、CDドライブ関連なので、多分 Win32_CDROMDrive を使うと思います。 検索したところ、トレイOPEN/CLOSEの例もありましたが成功サンプルは見つけられませんでした。 (ちゃんと見れていないだけかも) Q&Aのやり取りです。(英語) ↓ Help needed on Eject and Close CD script http://www.ureader.com/message/854874.aspx 2. 他のコンポーネントで代替 上記のQ&Aでは、メディアプレイヤーのコンポーネント(WMPlayer.OCX.7)をCreateObjectして、イジェクトする回答も寄せられていました。 3. Win32 API 直接呼び出し デフォルトではなくフリーウェアで、WSH から Win32 API を直接呼び出すコンポーネントがあります。 DynWrap Helper コンポーネント http://members.at.infoseek.co.jp/IUnknown/WSH/dwhelper/ 昔はDynaCallと言うものがありましたが、その拡張と言うか後発版のようです。
お礼
回答ありがとうございます。 思っていたコードと違っていましたが、 無事オープン/クローズできました。 ありがとうございました。