デバイスマネージャのCOMポートを取得するには?

解決


なー  2004-04-02 16:13:07  No: 82829  IP: [192.*.*.*]

Win98でPCに接続されているデバイスのCOMポート番号を
VB6.0で取得したいと思ってます。
レジストリから何とか取得出来そうですが、とても大変そうです。
そこで、デバイスマネージャ-システムの、「ポート(COM)」と「モデム」の
COMポート番号を取得する方法はありますでしょうか?
(繋がっている時だけ現れるようなので)
色々調べたのですが、分かりませんでした。
ロジック、API関数、書籍等何でもよいのですが、ご存知の方おりましたら
よろしくお願いします。

編集 削除
ぴろあき  2004-04-02 17:21:54  No: 82830  IP: [192.*.*.*]

デバイスマネージャーから取得の方が難しいと思いますが。。。
普通はレジストリから取得でしょうね。
私には質問の方法はわかりません。

簡単にCOMポートが使用可能かどうかを知りたいのなら、
下記のようなコードはいかがでしょう?

On Error GoTo 10
MSComm1.CommPort = PotN
If MSComm1.PortOpen = False Then MSComm1.PortOpen = True
MSComm1.PortOpen = False    
Exit Sub
10:
If err.Number = 8002 Then
    MsgBox err.Description, vbCritical, "注意"
End If

COM1からCOM256まで走査させれば、
使用可能なポートの列挙とかもできますね。

>Win98でPCに接続されているデバイスのCOMポート番号を
どういう意味で接続と言っているのかわかりませんが、
シリアルケーブルが接続されていなくても、
デバイスマネージャーには表示されます。

#ただし、USB-RS232C変換ケーブル等の、
#プラグ&プレイなCOMポートは、
#接続されていなければ、表示されませんが。。。

編集 削除
なー  2004-04-02 18:20:32  No: 82831  IP: [192.*.*.*]

説明が足りなくてすみません。ご指摘の通りUSB-RS232Cです。
アドバイスいただいた方法は、ポートを何度も読みにいく事でログが残り、
セキュリティ面で問題があると言われてしまいました。。
地道にレジストリを大捜索しようと思います。
ご返答ありがとうございました。

編集 削除
岡田 之仁  2004-04-02 19:54:20  No: 82832  IP: [192.*.*.*]

ここの掲示板の・・・

http://madia.world.coocan.jp/cgi-bin/VBBBS2/wwwlng.cgi?print+200402/04020027.txt

ご参照下さい。

※  NT/2000/XP でしたら、権限の問題が出るかもしれません。
    お試し下さい。

以上。

編集 削除
なー  2004-04-02 23:47:47  No: 82833  IP: [192.*.*.*]

こんな素晴らしい方法があったのですね!検索不足でした。
完徹して長々とロジックを組んでいたので、お教え頂き感激です。
テストをしたところ、2000では上手くいきましたが、98ではエラーがでました。
必要ファイルをインストールして使いたいと思います。
(98も対応のものを作っているので、98のロジックでしか使いませんので。)
ありがとうございました!

編集 削除