• 締切済み

プログラムでUSB機器が接続された事を認識するにはどうしたら良いのでしょうか?

プログラムでUSB機器が接続された事を認識するにはどうしたら良いのでしょうか? デバイスマネージャの出すメッセージを受け取る様にするのだと思うのですが、どうやって、どのメッセージを処理すのでしょう。 よろしくお願いいたします。

みんなの回答

  • 2ch
  • ベストアンサー率51% (64/125)
回答No.6

さてさて、お手上げデスダよ。 自宅に帰ってから、いろいろUSBを試してみたものの、取れねぇーズラよ うーむC掲示板に書いたほうが、ズバリを得られるかもしれぬ。 参考URLを得たり、ソースを得たら、VBにコンバートしてみてはどう? ドライバは設計したことねぇズラし、サンプルもあまり転がってないのネ。 むずいズラよー

Yoko317
質問者

補足

いろいろ調べてちょっとわかってきました。 vc++ではCWnd::OnDeviceChangeイベントが発生するようですが、VBでは取れないもののようです。 でもVBで取れないイベントをwin32APIのSetWindowLong関数で取得できるようになるらしいです。 http://tokyo.cool.ne.jp/kanain/APIHTM/GetMsg.html http://www.vbvbvb.com/jp/gtips/0501/gSetWindowLongEnLink.html とりあえずここらを調べて何とかなりそうかな? いろいろありがとうございました。

  • 2ch
  • ベストアンサー率51% (64/125)
回答No.5

それらしき情報 http://www.osr.com/ntinsider/1998/Converting/converting.htm ちなみに IRP系のメッセージはどこで聞いたの? 逆に参考URL求む

Yoko317
質問者

補足

これらはデバドラが処理するもののようです。 でも、ここらへんぐらいしか手掛かりがなくて。 デバイスドライバ関連の雑誌とかページとかに載ってます。 たとえば、 http://www5a.biglobe.ne.jp/~crab/winddk/pnp.html とか。 ちょっと見たところ上記のページはWDMドライバの説明のような?英語が得意ではないので、もうちょっとじっくり読んでみないとはっきりしませんが・・・

  • 2ch
  • ベストアンサー率51% (64/125)
回答No.4

>IRP_MN_MOUNT_VOLUME/IRP_MN_REMOVE_DEVICE ぬぉ、知らなかった。 メッセージ発行してるのネ。 SetWindowsHookExで取れるのかな?

  • 2ch
  • ベストアンサー率51% (64/125)
回答No.3

ここは見た?

参考URL:
http://oshiete1.goo.ne.jp/kotaeru.php3?q=73258
Yoko317
質問者

補足

ドライバ関係はあれこれ調べてみました。 ドライバでは"IRP_MN_QUERY_START_DEVICE"または "IRP_MN_MOUNT_VOLUME"とか"IRP_MN_REMOVE_DEVICE" とかのメッセージが捕まえられるようです。 アプリではどうしたらよいのやら・・・。

  • 2ch
  • ベストアンサー率51% (64/125)
回答No.2

http://oshiete1.goo.ne.jp/kotaeru.php3?q=505982 という過去スレがあるけど、USB接続機器の認識後の操作なら可能かと思われ。 ていうか、装置の脱着だけ捕らえたらいいわけ?

Yoko317
質問者

補足

OnLine,OffLineの切り換えをするために装置の接続状態を取得したいと思っているのですけど・・・・・

  • 2ch
  • ベストアンサー率51% (64/125)
回答No.1

最新のMSDNを持っているなら説明が載っています。(英語) 直接USBのホストコントローラを制御しないといけないので、VisualBasicでは不可能です。VC++でないと無理っぽ

Yoko317
質問者

お礼

ありがとうございます。やはりVisualBasicのみでは無理でしょうか。 もっと簡単に考えていたのですが、あれこれ探してもほとんど情報がないところを見ると一般的な仕様ではないのかも。仕様自体見直すべきかもしれません。

関連するQ&A