アプリ版:「スタンプのみでお礼する」機能のリリースについて

VBSでCDトレイのオープン/クローズのコーディング方法わかりません。
Excel for VBA では出来ましたが、VBSで作りたいのです。

http://www.mhl.janis.or.jp/~winarrow/vbscript/ht …
を見ると、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
-----------

A 回答 (2件)

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
    • good
    • 0
この回答へのお礼

回答ありがとうございます。

思っていたコードと違っていましたが、
無事オープン/クローズできました。

ありがとうございました。

お礼日時:2010/08/01 12:30

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/dw …

昔はDynaCallと言うものがありましたが、その拡張と言うか後発版のようです。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!