Win2000/XPなのですが、
デバイスマネージャの「ポート」を見ながら
USBケーブルを接続すると、接続して利用可能になったポート名が出ますよね。
このとき、Delphi(バージョンは7)側で、「USBポート(というかCOMポート)が
使えるようになったよ!」
というメッセージ通知のようなものは受け取れますでしょうか?
「しかもCOM5だよ!」なんていう事までわかるメッセージ(イベント?)もあるのでしょうか?
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のメッセージが来たときにレジストリの接続中ポートを判断すれば何番のポートが変更あったか確認可能です。
kkk様、ご親切にありがとうございました。
予めWM_DEVICECHANGE、DBT_DEVICEARRIVAL、DBT_DEVICEREMOVECOMPLETE
といったメッセージがわかっていれば他に調べる事ができたんですけど、それすら
わからなかったもので・・・。
おかげ様でどんなメッセージがやってくるのかがわかったので、それを元に調べてみたらこんなHPもありました。
http://www.delphipraxis.net/dpX_print.php?t=32224
で、どうにか検出できるようになりました。
どうもありがとうございました。
ツイート | ![]() |