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

 

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

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

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

自分がハマった点は,

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

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

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

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

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

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


Lhazのリリース方法

Lhazのリリース方法です。v2系を例にしています。

lhaz_release1

lhaz\Releaseフォルダ配下の,上図で選択状態になっているファイルを,「送る」で「デバッグ版のLhaz.exe」に送ります。あるいは,デバッグ版のLhaz.exeにドラッグ&ドロップしてください。32ビット版は,32ビットデバッグ版,64ビット版は,64ビットデバッグ版で圧縮します。圧縮形式は,「SFX(CAB)圧縮」を選びます。自己解凍書庫の設定は,以下のようにします。

「ショートカット名」を空欄にする点に注意してください。

v3系は以下のファイルになります。

lhaz_release2