MIDIデバイスに手をつけず、開かれてるか判別するには?


たかみちえ  URL  2001-08-05 13:45:28  No: 74737  IP: [192.*.*.*]

MIDIのデバイスに"一切"手をつけず、他のソフトとか、(もしくはプログラムミスで)で
開かれているかを判断するにはどんなAPIがあるでしょうか?

編集 削除
こころ  URL  2001-08-05 19:36:04  No: 74738  IP: [192.*.*.*]

意図がわからないのですが・・・。
一切手をつけなければ、わかるはずがないのでは?
自アプリであれば、MIDIデバイスを開いたときに
フラグを立てれば捕捉はてきますが
プログラムミス等は不可能ですし。

何か理由があれば、他の回避方法を
誰かが提案してくれるかもしれませんよ。

編集 削除
たかみちえ  2001-08-05 21:51:22  No: 74739  IP: [192.*.*.*]

他のMIDIプレイヤーがMIDIデバイスを使ってるか、判別したいんです。
でもだからといって、こちらで一旦開いてすぐに閉じようとすると、エラーが起こっちゃう。
(midioutopen→midioutclose)
どうやら横取り(他のプレイヤーがMIDIデバイスを手放した直後にデバイスをとるという、まあ…)はできるようですけど。
それに、MIDI関連は下手をすると、強制終了がつきまといます。
その辺はしっかりしておきたいですから。
それに、何だかmci関連と、midiout関連は、ほとんど同じ場所にあるけど、違う…?

プログラムミスは冗談です^^;まあ、ないと思います。

編集 削除
こころ  URL  2001-08-06 00:13:37  No: 74740  IP: [192.*.*.*]

> こちらで一旦開いてすぐに閉じようとすると
> エラーが起こっちゃう。
エラーとは何なんでしょう?
他のアプリが開いていれば、オープンで失敗するので
そこで、使用中(再生中かは知らないけど)と判別できますよね?

> 他のプレイヤーがMIDIデバイスを手放した直後に
> デバイスをとるという
横取りした瞬間に、他のプレイヤーが確保できない時の処理を
行っていないためにエラーが発生するということでしょうか?

> MIDI関連は下手をすると、強制終了がつきまといます。
まぁ、強制終了はMIDIに限ったことではありませんが
MIDIで失敗すると、OSが死んだり、MIDIデバイスが
再起動しないと使用できなくなったりと色々重大な問題が
多々発生はしますよね。

mci関連midiout関連は違いますね。
midiOutの上位にmciが存在します。
mciはmidiの他にwaveやavi等、いわゆるマルチメディア系の
低レベルAPIを内部でゴリゴリ呼び出してます。
んで、自信は簡単なインターフェースを提供する
高レベルAPIってわけです、はい。

編集 削除
たかみちえ  2001-08-06 08:15:46  No: 74741  IP: [192.*.*.*]

>エラーとは何なんでしょう?
>他のアプリが開いていれば、オープンで失敗するので
>そこで、使用中(再生中かは知らないけど)と判別できますよね?
  エラー…じゃなくて強制終了ですね^^;
あまりにも頻繁に起こるもので…。

  こういうのはたまに、数ミリ秒ほどウェイトをかけると治ったりしますけどね。

>横取りした瞬間に、他のプレイヤーが確保できない時の処理を
>行っていないためにエラーが発生するということでしょうか?
  これは単純におもしろ現象だと思います^^;
ブラウザでもなんでもすることなので。

>まぁ、強制終了はMIDIに限ったことではありませんが
>MIDIで失敗すると、OSが死んだり、MIDIデバイスが
>再起動しないと使用できなくなったりと色々重大な問題が
>多々発生はしますよね。
  そもそもデバイスを操ること自体がちょっと危険なんですよね。
VBの中では、VBを終了すれば、デバイスは戻るけど…。
DirectMusicでは…。強制終了ばっかり。
もうOS自体に無理が出てるかも…。ずいぶん前のだし。

>mci関連midiout関連は違いますね。
  DLLからDLLを呼び出すんですね。(同じ所だったかな…?)
mci "open 〜〜"は、MIDIデバイスが開いてようとなんだろうとできるし。
(うちではmciSendStringをmciと宣言してるんです^^;書くのメンドウだし)

編集 削除