解決に繋がりそうで何よりです。
hpDataTop32 の仕様はさすがに私にはどうしようもないですね。
仕様が出ていたとしても NIFTY SERVE だったのではないでしょうか。
解析するなら自前で単純なMIDIファイルを作ってみて…でしょうか?
ちゃんとしたデータを設定したいなら DPW.EXE から取得するのかなとは私も考えていました。
・hpDataTop32 取得用のプラグインを作成し、プロセス間通信や共有メモリで kbrundpx.exe に送信する
・DPW.EXE から ReadProcessMemory() 等を使用して直接読み取る
ReadProcessMemory() は対象のアドレスが変動するかもしれないので、プラグイン方式でしょうかね。
・kbrundpx.exe で共有メモリ1を確保して「DPW.EXE "****.mid"」を起動
・プラグインの dpxChangeSong() がコールされたら共有メモリ2を確保して hpDataTop32 を設定
・kbrundpx.exe で共有メモリ2を読んだらプラグインで dpxCmdExit() をコール
※共有メモリ1は同期用のイベントハンドル等通知用、共有メモリ2は hpDataTop32 のデータ設定用
※パイプで hpDataTop32 を送信するのも有り?
もう必要ないでしょうが、テストプログラムを一部修正したので添付します。
プラグインの拡張子が .DPX ではない場合、設定画面を表示できない等の現象が発生するようです。
(272KB)