USB接続通知を知るには?

解決


レベル5  2005-06-15 20:23:26  No: 15653  IP: 192.*.*.*

Win2000/XPなのですが、
デバイスマネージャの「ポート」を見ながら
USBケーブルを接続すると、接続して利用可能になったポート名が出ますよね。
このとき、Delphi(バージョンは7)側で、「USBポート(というかCOMポート)が
使えるようになったよ!」
というメッセージ通知のようなものは受け取れますでしょうか?
「しかもCOM5だよ!」なんていう事までわかるメッセージ(イベント?)もあるのでしょうか?

編集 削除
kkk  2005-06-16 04:51:18  No: 15654  IP: 192.*.*.*

CD-ROMの扉の開閉と同じようにWM_DEVICECHANGEを使用すればUSB-Serialの着脱が認識できます。
http://www.delphi-jedi.org/APILIBRARY:215841から DBT.ZIPをダウンロードします。
その中のDBT.PASを使用してください。
WM_DEVICECHANGEのイベントでDBT_DEVICEARRIVAL/DBT_DEVICEREMOVECOMPLETEのメッセージがきます。
この時DevidceTypeはDBT_DEVTYP_PORTとなっています。
ただこれだけではCOM5とかいう情報は得られません。
レジストリを検索することで判断可能です。
HKEY_LOCAL_MACHINE\'HARDWARE\DEVICEMAP\SERIALCOMM
をのぞいてみてください。
現在接続中の通信ポートを見ることが出来ます。
DBT_DEVICEARRIVAL/DBT_DEVICEREMOVECOMPLETEのメッセージが来たときにレジストリの接続中ポートを判断すれば何番のポートが変更あったか確認可能です。

編集 削除
レベル5  2005-06-16 11:51:20  No: 15655  IP: 192.*.*.*

kkk様、ご親切にありがとうございました。
予めWM_DEVICECHANGE、DBT_DEVICEARRIVAL、DBT_DEVICEREMOVECOMPLETE
といったメッセージがわかっていれば他に調べる事ができたんですけど、それすら
わからなかったもので・・・。
おかげ様でどんなメッセージがやってくるのかがわかったので、それを元に調べてみたらこんなHPもありました。
http://www.delphipraxis.net/dpX_print.php?t=32224

で、どうにか検出できるようになりました。
どうもありがとうございました。

編集 削除