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で質問しましょう!
似たような質問が見つかりました
- Access(アクセス) Vba Userformを前面に出すについて 3 2022/04/15 12:29
- Visual Basic(VBA) VBA 別ブックからの転記の高速化について VBA 別ブックからの転記の高速化についてご教授下さい。 19 2022/07/26 13:07
- Visual Basic(VBA) batからexeを実行し戻り値を受け取る バッチからEXEの結果を受け取りたいのですが、 下記のバッ 1 2023/07/04 15:13
- Excel(エクセル) 【マクロ】スクショ印刷がうまく動かない件 5 2022/12/06 17:37
- Visual Basic(VBA) 別シートから年齢別の件数をカウントしたいの続き 5 2023/01/24 00:16
- Visual Basic(VBA) ExcelVBAに関する質問 3 2023/02/17 10:47
- Visual Basic(VBA) いつもお世話になっております、VBAで教えて頂きたいのですが 2 2022/05/05 22:20
- Visual Basic(VBA) batからexeを実行し戻り値を受け取る EXEの実行内容の結果によって、戻り値を0か1かで返したい 1 2023/07/04 16:40
- Visual Basic(VBA) VBAで質問ですが、皆さんはどの様に導き出しているのでしょうか? 6 2022/05/03 21:53
- Visual Basic(VBA) 【VBA】写真の貼り付けコードがうまく機能しません。 5 2022/09/01 18:43
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
requestFocusについて
-
Visual Basic 2010を使ってRS-2...
-
ファイル保存先のダイアログが...
-
VB.NETでフォーム上にExcelのよ...
-
delphi stringgrid
-
Buttonの色
-
フレーム上のコンポーネントの...
-
VB.NETでMSComm が追加できず?
-
NetBeansのデザイン画面で自動...
-
コンポーネント
-
JScrollPane上のJTableの再描画
-
C++ Builder でVisibleとshow
-
エクセルVBAで、条件に一致する...
-
「タイプ初期化子が例外をスロ...
-
パワーポイントのVBAでテキスト...
-
インスタンス参照でアクセスで...
-
複数の変数を宣言する時、同時...
-
VB.NET getとsetの概念がわかり...
-
変数名の付け方
-
コンボボックスのマウスホイー...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
VB.NETでフォーム上にExcelのよ...
-
VB.NETでMSComm が追加できず?
-
ファイル保存先のダイアログが...
-
requestFocusについて
-
Visual Basic 2010を使ってRS-2...
-
ツールボックスのような折りたたみ
-
C#で設定時刻到来時にイベント...
-
[delphi] 変数を利用してコンポ...
-
java gui のイベント処理が重い
-
VBSでCDトレイのオープン/ク...
-
ゲーム画面(JFrame)のサイズ変...
-
VS2010デザイナーの読込エラー...
-
コンポーネント
-
delphi stringgrid
-
borland C++ Builder 6でSPComm...
-
JScrollPane上のJTableの再描画
-
画像を一瞬だけ表示する。
-
パネルのフォーカス移動
-
フレーム上のコンポーネントの...
-
アクティブなTextFiel...
おすすめ情報