使用可能なCOMポートを列挙するにはどうすればよろしいでしょうか?
いろいろ調べてみたのですがわかりませんでした。
宜しくお願い致します。
環境:XP XP2 CV++.net ダイアログベース
何を調べたのでしょうか?
Googleで検索したらすぐ見つかりましたよ。
一般的には、CreateFileで、『COMx:』をオープンして開けるかどうかで、
確認するのが一番確実です。
WMIで、Win32_SerialPort で列挙する方法も簡単?ですが、列挙されない
増設ポートが存在しますので、NGでしょう・・・
http://www2.noritz.co.jp/anchor/ashp/netmon/samples/wmi_hard.html#Win32_SerialPort.htm
レジストリで、HKEY_LOCAL_MACHINE\HARDWARE\DEVICEMAP\SERIALCOMM\ 下
のものを閲覧すると言う手もありますが、こちらもここに登録されない
増設ポートが存在しますので、NG・・・
増設ポート等のドライバー書く人には、ちゃんと規定通りに登録情報を
あげて頂きたいのですが・・・
参考までに・・・
以上。
追伸・・・
http://www.planet-source-code.com/vb/scripts/ShowCode.asp?txtCodeId=635&lngWId=10
ここのソースコードが参考になるかと・・・
ちょっと大きなプロジェクトですが、列挙していますので。
こちらのは、『COM1:〜COM32:』までをforループで回して、オープン
できたかどうかで列挙しています。
参考までに・・・
以上。
岡田様に御意。
最近はやり?の USB/SERIAL IF など使っていると、プログラム起動時には無かった COMx が
突然 PnP されるとかありますので、起動時に列挙しても無駄なことがしばしば。
(WM_DEVICECHANGE を捕らえて再列挙するとかの対策が必要)
そこまでするくらいなら、ポート名を手入力可能に組んでおくほうがいいです。
>am様 岡田 之仁様 tetrapod様
ありがとうございました。
無事に解決致しました。
ツイート | ![]() |