![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?e8efa67)
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件)
- 最新から表示
- 回答順に表示
No.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
No.1
- 回答日時:
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と言うものがありましたが、その拡張と言うか後発版のようです。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
VB.NETでフォーム上にExcelのよ...
-
tableView reloadDataが出来ない
-
VBでCPUの使用率を取得できます...
-
VB スプレッドシート
-
エクセルVBAで、条件に一致する...
-
「タイプ初期化子が例外をスロ...
-
オブジェクトレベルとメタレベル
-
配列の重複する値とその個数を...
-
変数名の付け方
-
private static という変数の修飾
-
tryの終了
-
インスタンス参照でアクセスで...
-
説明文書でのメソッド・変数の...
-
生成したインスタンスを削除す...
-
関数内の変数に<summary>コメン...
-
サーブレットコンテキストの意...
-
C# インスタンスの破棄
-
JSPで<SELECT>の中にDBから持っ...
-
dllと同じプロジェクトにする方法
-
JavaのSingletonパターンのpriv...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
VB.NETでフォーム上にExcelのよ...
-
requestFocusについて
-
VB.NETでMSComm が追加できず?
-
ファイル保存先のダイアログが...
-
JScrollPane上のJTableの再描画
-
フレーム上のコンポーネントの...
-
Visual Basic 2010を使ってRS-2...
-
C#で設定時刻到来時にイベント...
-
VB6のツールボックスへのコンポ...
-
C++Builder でPanel上にフォー...
-
java 電卓 平方根
-
java gui のイベント処理が重い
-
ツールボックスのような折りたたみ
-
同じコンポーネントを複数の場...
-
[delphi] 変数を利用してコンポ...
-
C++ Builder でVisibleとshow
-
コンポーネント
-
VBSでCDトレイのオープン/ク...
-
パネルのフォーカス移動
-
JButton配列でのイベント処理
おすすめ情報