ここでは音楽を再生する方法について説明します。実は音楽を再生する方法って結構あるんです。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クラスを使用すると良いかと思います。ファイル名を指定するだけでで再生できるようになります。
|