C# と VB.NET の質問掲示板

わんくま同盟

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト


(過去ログ 53 を表示中)
■29759 / )  Re[10]: waveファイルの再生キャンセル方法
□投稿者/ .SHO (407回)-(2008/12/13(Sat) 17:44:29)
なんだかいろいろ言って申し訳ないので、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();
    }

解決済み
返信 編集キー/


管理者用

- Child Tree -