Appendix
外部からの KbMedia Player の制御

KbMedia Player はコマンドラインから引数を与えることによって制御することが可能です。
また DDE サーバとしての機能も備えており、外部アプリケーションから KbMedia Player を
制御することも可能になっています。

DDE のサービス名とトピック名は "KbMedia Player" です。( " は含みません)
XTYP_EXECUTE と XTYP_REQUEST をサポートしており、
入力した文字列をそのまま XTYP_EXECUTE として KbMedia Player に渡します。
起動済み Mutex オブジェクトの名称も "KbMedia Player" です。

KbMedia Player を制御するアプリケーションは、レジストリの

HKEY_CURRENT_USER\Software\Kobarin's Soft\KbMIDI Player\SearchPath\Kbmplay

を参照することにより、KbMedia Player の実行ファイルが置かれている
場所を取得することが出来ます。将来的には、

HKEY_CURRENT_USER\Software\Kobarin's Soft\KbMedia Player\Path\Kbmplay

に変更する予定ですが、色々事情があってしばらくの間変更できません。
将来に備えて KbMedia Player\Path\ の方を先に調べて、情報を取得できなかったら
KbMIDI Player\SearchPath\ の方を調べるようにした方が良いかもしれません。


XTYP_EXECUTE と起動時のコマンドライン引数とは書式が共通しており、
以下のコマンドが XTYP_EXECUTE で使用可能です。

/play演奏開始(再生中の場合は最初から演奏開始)
/p演奏開始(再生中の場合は何もしない)
  • /play, /p ともに、ファイル名とともに渡された場合は
    一番最初に渡されたファイルを直ちに演奏開始します。
  • 起動時(起動済みでない)のコマンドラインにファイル名を渡さずに
    /play や /p をつけた場合は、前回終了時に開いたファイルを直ちに
    演奏開始します。すでに起動済みの場合は、/play の場合は最初から
    演奏開始しますが、/p の場合はすでに演奏中だったときは何もしません。
    ショートカットの実行時引数で指定する場合は /p の方が良いと思います。
/np演奏を開始しない
  • リストに追加したいだけの場合に指定します。
/aリストに追加
/naリストに追加しない
/stop演奏停止
/pause一時停止・再開 (演奏中は一時停止、一時停止時は演奏再開)
/clearリストを破棄 (確認しない)
/seek:xxxx の位置にシーク
  • xx は h:m:s, s(秒), ms(ミリ秒) の3通りが指定可能。
    単位を省略した場合は秒と見なす。秒は小数点も使用可能
  • ex1:/seek:1:35
  • ex2:/seek:95
  • ex3:/seek:95s
  • ex4:/seek:95000ms
  • ex5:/seek:1:35.75
  • ex6:/seek:95.75
  • ex7:/seek:95.75s
  • ex8:/seek:95750ms
ex1~ex4 及び ex5~ex8 はそれぞれ同じ意味。
/fadeout:xxフェードアウト
  • xx はフェードアウト時間、書式は seek と同様で、
    省略した場合はプレイヤーの設定に依存
/trayタスクトレイに格納
  • 起動時のコマンドラインにつけた場合はタスクトレイに入った状態で起動します。
/mxMedia エクスプローラにタブを切り替え
  • /mx:"ファイル名" とすると、渡されたファイルを選択した状態で
    Media エクスプローラにタブを切り替えます。
/restoreタスクトレイ復帰
/next次の曲
/prev前の曲
/r1単曲リピート有効
/nr1単曲リピート無効
/fileclose再生中のファイルを閉じる
/quitKbMedia Player を終了

続いて XTYP_REQUEST で使用可能なコマンドです。

大文字と小文字は区別しません。例えば Status と status は同じと見なします。
すべての戻り値は文字列 (終端の \0 を含む) です。
認識しないコマンドなどが渡された場合は NULL を返します。

Status再生状態を返す。
  • 戻り値は
  • Playing (演奏中)
  • Stop (演奏停止)
  • Pause (一時停止)
  • Seeking (シーク中)
Position再生位置をミリ秒単位で返す。
Title再生中のサウンドのタイトルを返す。
Artist再生中のサウンドのアーティストを返す。
Length再生中のサウンドの曲の長さをミリ秒単位で返す。
  • 長さがわからない場合は -1 を返します。
FileName再生中のサウンドのファイル名を返す。
  • 戻り値は
  • ex1:C:\foo\bar.mp3
  • ex2:C:\foo.lzh>bar/baz.mid
  • ex3:C:\foo.rar>bar/baz.zip>quuz/hoge.spc
  • ex4:X:\::AudioCD::####
  • ex5:D:\emusound\foo.nsf::0003
ex2~ex5のように、戻り値の文字列が必ずしもファイルとして
存在するとは限らないことに注意。
ListFileName現在開いている演奏リストファイルのファイル名を返す。
  • 圧縮ファイル内の演奏リストファイルにも対応していることに注意。
    新規に作成されている場合は空文字列を返す。
ListCount演奏リストに登録されている曲の数を返す
SupportExt対応しているサウンドファイル形式の拡張子 (ピリオドも含む) を返す。
  • 拡張子はセミコロンで区切る。例えば
       .AAC;.MID;.MP3
    のような文字列を返す。将来的に先頭にピリオドを含まないものを
    返す可能性もあるが、その場合は無視すること。
    (.AAC;.MID;.MP3;FOO;BAR が返って来た場合は FOO と BAR は無視する)
SupportArc対応しているアーカイブ形式の拡張子を返す。書式は SupportExt と同じ。
ExeNameKbMedia Player の実行ファイル名 (フルパス) を返す
VersionKbMedia Player のバージョンを返す

以上です。
これを利用すると、リストファイルが前回開いていたものでよく、さらに再生される
ファイルも前回終了時に再生していたものでよいならば、KbMedia Player に
/p という引数を与えることによって起動すると同時に再生をはじめることができます。

KbMedia Player のショートカットをダブルクリックしたときに自動的に
再生が始まるようにするには、まず KbMedia Player のショートカットを作り、
プロパティのリンク先のところに /p を付け加えてください。
たとえば C:\KbMedia\Kbmplay.exe /p のようにします。

また単純にあるリストファイルを再生したいのであれば、
C:\KbMedia\Kbmplay.exe default.kbm
のようにすればそのリストが読み込まれ、再生が始まります。
引数の与え方次第でいろいろな事が出来ると思いますので、色々と試してみてください。