winformsアプリケーションでイーサネットポートの挿入/取り外しを検出しますか?

.net c# winforms

私のアプリケーションが動作しているマシンのイーサネットポートにデバイスが接続されたときにそれを検出したいのですが。 私はUSBポートでこれを行う方法を知っていますが、問題はポートがUSBではないということです。

それがWM_DEVICECHANGEであればそれは私が単純にWndProcをオーバーライドしてメッセージをキャッチするUSB​​デバイスだった場合、私は勝者にしている、私はそれがポートに差し込むことができる任意のデバイスでこれと同じくらい簡単かどうか疑問に思った?

何かが起こっているのかどうか、あるいはデバイスが動作しているのかどうかを知りたくありません。単に挿入または取り外しが行われたかどうかを調べるためだけです。

  6  3


ベストアンサー

私は自分では使いませんでしたが、 NetworkChange.NetworkAvailabilityChangedイベントがあなたのニーズに合うかもしれないと思います。

更新

簡単な調査では、 NetworkChange.NetworkAddressChangedがより適切に機能することが示されています。

public static void Main(){

NetworkChange.NetworkAddressChanged =(s、e)=> {NetworkInterface [] nics = NetworkInterface.GetAllNetworkInterfaces(); foreach(varics in nics){Console.WriteLine( "ネットワークインタフェース:{0}、状態:{1}"、item.Name、item.OperationalStatus.ToString()); ;}};

string input = string.Empty; while(input!= "quit"){input = Console.ReadLine(); }}

2


それがあなたのニーズにぴったり合っているかどうかは定かではありませんが、 `System.Net.NetworkInformation.NetworkChange`クラスを見ることができます。これには2つのイベントがあります。

  • NetworkAddressChanged

  • NetworkAvailabilityChanged

イベントハンドラで、関連するネットワークインタフェースがイーサネットポートかどうかを確認できます。

0


NetworkChangeクラスは、インターフェースがダウンからアップ、またはその逆に切り替わったときにトリガーされるNetworkAvailabilityChangedイベントを提供します。 おそらくあなたが探しているかもしれないほど低いレベルではありませんが、あなたはこのイベントを追跡することにおいてあなたの目的に特定ではありません。

0


タイトルとURLをコピーしました