月: 2012年5月

  • 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再生した時にも同じハマリになったのですが,すっかり忘れていました。

  • Lhazのリリース方法

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

    lhaz_release1

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

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

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

    lhaz_release2