Hardware-02 CDトレイを開閉する
Q CDの挿入を求めるときなど、CDトレイを開閉したいことがあるのですが、どうすれば実現できるでしょうか?
A MCI(mciSendCommand関数)を使って制御します。
どう使う?
'関数の宣言
#include <api_mmsys.sbp>
'CDトレイを開く
Dim mop As MCI_OPEN_PARMS
ZeroMemory(VarPtr(mop),Len(mop))
With mop
.lpstrDeviceType="cdaudio"
mciSendCommand(NULL,MCI_OPEN,MCI_OPEN_TYPE Or MCI_OPEN_SHAREABLE,mop)
mciSendCommand(.wDeviceID,MCI_SET,MCI_SET_DOOR_OPEN,ByVal NULL)
mciSendCommand(.wDeviceID,MCI_CLOSE,0,ByVal NULL)
End With'CDトレイを閉じる
Dim mop As MCI_OPEN_PARMS
ZeroMemory(VarPtr(mop),Len(mop))
With mop
.lpstrDeviceType="cdaudio"
mciSendCommand(NULL,MCI_OPEN,MCI_OPEN_TYPE Or MCI_OPEN_SHAREABLE,mop)
mciSendCommand(.wDeviceID,MCI_SET,MCI_SET_DOOR_CLOSED,ByVal NULL)
mciSendCommand(.wDeviceID,MCI_CLOSE,0,ByVal NULL)
End With
少しややこしいですね。
CDトレイの開閉は、MCIを使って制御しています。mciSendCommand関数が、MCIを制御する関数です。
MCIを使えば、音声ファイル(WAVEとかMIDI)や動画ファイルの再生が可能になり、CDに入っている曲の再生もサポートしています。
そのため、CDトレイの開閉をMCIから制御できるようになっているのです。
もちろん、音楽を再生する目的でなくても、この方法でCDトレイを開閉すれば問題なく動作します。