--音楽を鳴らしてみよう--

ここでは音楽を再生する方法について説明します。実は音楽を再生する方法って結構あるんです。MCIコントロール、ActiveMovieコントロール、DirectX、WindowsAPI、ってな具合に。
私はmciSendStringが幅広く対応してる&そこそこ使いやすいって理由でmciSendStringを使いました。
mciSendStringを使うって言ったけど、これがエラーになった時にどんなエラーかを取得するためにmciGetErrorStringってAPIも使います。
ではそれぞれの宣言を。

Private Declare Function mciSendString Lib "winmm.dll" Alias "mciSendStringA" _
                (ByVal lpstrCommand As String, _
                ByVal lpstrReturnString As String, _
                ByVal uReturnLength As Long, _
                ByVal hwndCallback As Long) As Long

Private Declare Function mciGetErrorString Lib "winmm.dll" Alias _
                "mciGetErrorStringA" _
                ( ByVal dwError As Long, _
                ByVal lpstrBuffer As String, _
                ByVal uLength As Long) As Long

じゃあ引数の説明をしていきます。
まずはmciSendStringから。
lpstrCommandはその名の通りコマンド文字列。あとでじっくり解説します。
lpstrReturnStringには情報が返されるバッファを指定します。
uReturnLengthはlpstrReturnStringのサイズです。
hwndCallbackはサブクラス化を行うときにコールバックするウィンドウのハンドルです。

次mciGetErrorStringいきます。
dwErrorはエラーナンバーを渡します。エラーナンバーはmciSendStringの戻り値を渡せばOKです。
lpstrBufferはエラー文字列が返されるバッファを指定します。
uLengthはlpstrBufferのサイズです。

それぞれの引数自体はあまり難しいものではないですね。
あとはmciSendStringに渡すlpstrCommandだけですね。
コマンド文字列には次のようなものがあります。
*まだまだありますが、私が使用しているのはこれくらいです。

コマンド 説明 構文
open デバイスを開きます open ファイル名 alias エイリアス名
close 開いているデバイスを閉じます close エイリアス名
play 再生を始めます play エイリアス名
stop 停止します stop エイリアス名
pause 一時停止します pause エイリアス名
resume 再生を再開します resume エイリアス名
seek 再生位置を変更します seek エイリアス名
set デバイスのコントロール設定を変更します set エイリアス名 to 位置
status デバイスの状態に関する情報を得ます 下記参照
capability デバイスの能力の情報を得ます 下記参照

status
コマンド 説明 構文
length 再生しているメディアの長さ status エイリアス名 length
current track CDの現在のトラック数 status エイリアス名 current track
position 現在再生中の位置 status エイリアス名 position
number of tracks CDのトラック数 status エイリアス名 number of tracks
position track CDのトラックが始まる位置 status エイリアス名 position track トラック番号
time format タイムフォーマット status エイリアス名 time format

capability
コマンド 説明 構文
device type デバイスの種類を取得 capability エイリアス名 device type

open以降のエイリアス名はopenで設定したエイリアス名です。
また、ファイル名にスペースが入るなどした場合には""で囲わないとエラーとなります。いつでも""で囲うようにしたほうが良いでしょう。
また当然openしたデバイスはcloseしましょう。
たいした説明をしてないけどこれらのコマンド文字列を送るだけで音が鳴るようになります。
こんな事解りたくもない!!俺は音が鳴りゃあいいんだ!!って人や、この説明だけじゃ良くわかんないって人はMultiMediaクラスを使用すると良いかと思います。ファイル名を指定するだけでで再生できるようになります。

-Back-