- ベストアンサー
デバイス認識(ドライバインストール完了)を取得したい
VC6.0でUSBデバイスを接続したときに動作するProgramを作成検討しているのですが、、、、 接続されたタイミングは、「OnDeviceChange」で判別できたのですが、新規のUSBデバイスを接続すると、何回かOnDeviceChangeが発行されてしまいます。 デバイスの認識がん完了したときにだけ動作させたいのですが、、、、 何か方法を知っているかたがいましたら、御教授いただきたいと思います。 よろしくお願いします。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
DBT_DEVICEARRIVALが複数回きてしまうのですね。 すみませんでした。 2回目以降のイベントを無視するのが簡単かと思うのですが 最後のイベントで処理がしたいという話ですよね、きっと。 対症療法的なんですが、何十回かサンプリングして回数と間隔を把握して それにあわせてソフトを組むとか。。。(ダサイですね) ↓に同じ現象の方がいるみたいですね。。。 http://hpcgi1.nifty.com/MADIA/VBBBS2/wwwlng.cgi?print+200905/09050026.txt 何個か打開策が提示されております。 (根本の原因についてと、解決したかは書かれておりませんが。。。)
その他の回答 (1)
- YEND77
- ベストアンサー率56% (21/37)
>>何回かOnDeviceChangeが発行される その時のnEventTypeを解析すればいいのではいいのでは? 分岐は↓を参考に・・・ http://www.usefullcode.net/2007/02/usb.html
補足
>>その時のnEventTypeを解析すればいいのではいいのでは? DBT_DEVICEARRIVAL で判断すれば?という意味でしょうか? この「DBT_DEVICEARRIVAL」が何度か発行されている状況です。 (説明の仕方が悪くもうしわけない m(__)m) 一度でも接続されたUSBデバイスであれば、2回目以降は問題ないが、今やろうと考えているのは、すべて新規デバイスが接続された場合を想定しています。 通知領域に「新しいハードウェアがインストールされ、使用準備が出来ました。」が出るタイミングがわかればいいのですが、、、、
補足
申し訳ないです。 そのBBSは、僕があげたものです。 VBでは、実際打開策は無く、、、、、、 で、VCへ移行することで打開できないかと思いあげています。 (あそこはVB版なので・・・・・) いろんなとこで質問あげてしまい申し訳ないです m(_ _)m >対症療法的なんですが、何十回かサンプリングして回数と間隔を把握して >それにあわせてソフトを組むとか。。。(ダサイですね) 最終手段としては、それしかないかと思っています。 新規USBデバイスを認識するとInstallが開始されますが、その際に複数のデバイスとして認識されています。 (USBデバイスとディスクデバイスと2種類など・・・・) それぞれ、ドライバのInstallが動作するため、複数回の動作が起きていると 推測されます。 同じデバイスIDが認識されたら、無視するなどもありますが、同じ機器を 2回接続した場合には、動作しなくなってしまいます。 (やっぱり、waitしかないのかな?) Windowsが認識している以上、何かしらのメッセージなりが飛んでいれば 捕まえられそうですが、、、、、 お願いばかりで申し訳ありませんが、分かる方いましたら教えていただきたいです。