C#でmp3ファイルを再生する

 

C#でmp3再生がようやく出来ました。

P/InvokeでmciSendCommandを使用します。

大筋は,Creating a Sound Recorder in C and C# でOKです。

自分がハマった点は,

mciSendCommandの第4パラメータ(下記のparam)は,

public static extern uint mciSendCommandW(uint deviceId, uint command, UIntPtr flags, IntPtr param);

と,IntPtr型で定義し,Marshal.StructureToPtrで設定している点と,

    [STAThread]
    public static void Main()

と Single Thread Apartment にしなければならない点でした。STAにしないと,MCIERR_CANNOT_LOAD_DRIVER(266)というエラーが返ります。

フォームを使うとSTAになるらしいのですが,まだ試作でコマンドラインレベルのため,STAになっていないようでした。

検索すると,外国の方がたいへん悩んだ様子があり,未解決のままになっているのですが,STAにするといいですよ。

STAの件は,以前にC++/CLIでMP3再生した時にも同じハマリになったのですが,すっかり忘れていました。

コメント

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です