- PR -

有線LAN接続状態の判定

1
投稿者投稿内容
みけくん
会議室デビュー日: 2006/09/27
投稿数: 2
投稿日時: 2006-09-27 20:15
あるEXE(VB 6.0)を起動時に端末でLANケーブルが接続されているかどうかを
判定したいので、以下の方法で処理しています。

IP Helper APIのGetIfTable()関数を使用してネットワークの情報を取得し
同関数で取得できたMIB_IFTABLE構造体のdwTypeがMIB_IF_TYPE_ETHERNET(イーサネット)のもので
dwOpStatusがMIB_IF_OPER_STATUS_OPERATIONAL(接続中)であるかどうかで判定
ところが、端末で無線LANを使用している場合にもdwTypeが有線LANの場合と同じように
MIB_IF_TYPE_ETHERNETなので、接続中と判定してしまいます。

有線LANで接続されているかどうかだけを判定したいのですが、ネットワークの基礎知識に乏しく
どういう情報で判断すればよいのかがいまひとつ判りません。

どなたかいい方法(API関数での判定方法等)はご存知ではないでしょうか?
よろしくお願い致します。


実行環境はWindows 2000、またはXPです。
jama
常連さん
会議室デビュー日: 2006/09/12
投稿数: 45
投稿日時: 2006-09-28 17:38
DOSプロンプトで
C:\>ipconfig /all > results.txt
を実行し、結果を解析してはどうですか。

> 端末でLANケーブルが接続されているかどうかを判定したい
LANボードにより結果が変わるので(未確認です)
シビアな接続判定は難しいかと思います。
ue
ぬし
会議室デビュー日: 2005/05/07
投稿数: 581
お住まい・勤務地: 広島市
投稿日時: 2006-09-28 19:02
こんばんは。

ターゲットが XP なら WMI を使って接続を判定することもできます。
Win32_NetworkAdapter クラス の NetConnectionStatus プロパティ でネットワークアダプタの状態を取得できます。
値が 7 のとき Media disconnected ということでケーブルが接続されていません。

Windows 2000 ではサポートされていないプロパティなので問題は解決しませんが、参考になれば。
_________________
上本亮介 (ue) @ わんくま同盟
Microsoft MVP for VSTO (Jul 2008 - Jun 2009)
Hello Another World!
.NET 勉強会 / ヒーロー島
未記入
会議室デビュー日: 2006/09/08
投稿数: 16
投稿日時: 2006-09-28 21:59
無線LANか有線LANか判断したいってこと?
そんなのできるの?

[追加]
って読み違いじゃなければ出来るのね。
[/追加]

[ メッセージ編集済み 編集者: 未記入 編集日時 2006-09-28 22:12 ]
みけくん
会議室デビュー日: 2006/09/27
投稿数: 2
投稿日時: 2006-09-29 01:29
jama様、ue様ありがとうございます。
jama様
>DOSプロンプトで
>C:\>ipconfig /all > results.txt
>を実行し、結果を解析してはどうですか。
ipconfigでは、無線LAN、または有線LANが切断中は、[Media disconnected ]と表示されます。
またIP HelperAPI関数のGetAdaptersAddressesで返却されるIP_ADAPTER_ADDRESSES構造体のFriendlyNameにはipconfigで「ローカル エリア接続」とか「ワイヤレス接続」で表示される日本語のアダプタの通称(?)が返却されるというのは判っているのですが、そこの名称が「ワイヤレス接続」という日本語名であったら、同構造体のアダプタの状態を格納するOperStatusメンバの値を見てという方法が、Windows2000とか、ワイヤレスの種類によって相違がないのか、いまひとつ確信が持てません。

ue様
やはりWMIにそういう管理情報があるのですか・・。もしやと思って探していたのですがうまく見つけ出せていませんでした。XPの今の環境でどうなるか、一度試してみます。
1

スキルアップ/キャリアアップ(JOB@IT)