|
なんだかいろいろ言って申し訳ないので、mciSendString API を使用した
MySoundPlayer クラス作りました。このままで望みどおりに動くと思います。
後は、煮るなり焼くなり好きにして頂いて結構です。
using System.Text;
using System.Windows.Forms;
using System.Runtime.InteropServices;
public class MySoundPlayer {
[DllImport("winmm.dll")]
extern static int mciSendString( string s, StringBuilder t, int i, int j );
private string fname;
public MySoundPlayer( string f ) { fname = f; }
public void Play() {
mciSendString( "close s", null, 0, 0 );
mciSendString( "open \"" + fname + "\" alias s", null, 0, 0 );
mciSendString( "play s", null, 0, 0 );
}
public void Stop() {
mciSendString( "close s", null, 0, 0 );
}
public bool Status {
get {
StringBuilder sb = new StringBuilder( 32 );
mciSendString( "status s mode", sb, sb.Capacity, 0 );
return sb.ToString() == "playing";
}
}
}
// 使用例
MySoundPlayer player = new MySoundPlayer( "サウンド.wav" );
private void Button1_Click( object sender, EventArgs e ) {
if ( player.Status )
player.Stop();
else
player.Play();
}
|