現在のコンピュータネットワーク接続状態を検出するためにInternetGetConnectedState APIを使用して、[C#の]

現在のコンピュータネットワーク接続状態を検出するためにInternetGetConnectedState APIを使用して、[C#の]


プログラムは、ネットワーク接続を検出する能力を追加するために時々、私たちが必要となります、おそらくネットワークが切断されたときにいくつかのヒントを示し、または無効に一部のプログラムの機能。その後、我々はNetworkChange.NetworkAddressChangedを採用する傾向があり、ネットワーク環境が可能な場合でも、ネットワークの外部に検出するために、タイマーのPing方法を変更したり、追加されることがあります検出するために、これら2つのイベントがNetworkChange.NetworkAvailabilityChangedことがあります。上記の二つの方法.NET完全なプログラムではかなり一般的な方法であるが、著者の経験、NetworkChangeは希望とマルチカード環境で実行異なる場合がありますが、通常のトリガイベントは、他の方法である可能性があり場合でも、彼らはネットワーク上にあるかどうかを判断するために、Pingの検出方法としては、実際のパケットインスペクションを送信する必要がある、検討する必要がないだけでブロックされてもよいが、パケット送信の追加負担を考慮して、彼らはシステムに直接接続できるかどうかを尋ねます状態は確かに良いことでしょう。だから、InternetGetConnectedState APIを使用することもレコードに容易に、ここで少し、同様の機能を実行するには良い選択することができます。

現在のコンピュータのネットワーク接続状態を検出するために、InternetGetConnectedState APIを使用するには、すべての最初の私たちは、APIの関数プロトタイプを見ています。

  __out  LPDWORD lpdwFlags,
  __in   DWORD dwReserved
);

関数プロトタイプから、我々は、APIは2つのパラメータを必要としていることがわかります一つは、現在のネットワーク接続型に前後に渡され、戻り値は以下の表に記載されています:

画像

別のパラメータは、その上に直接0にAPIの保持です。APIの戻り値のようなコンピュータネットワークが接続状態であるか否かを表します。

用法関数プロトタイプが明確になった後、私たちはAPIの実際の使用を開始することができ、APIは、最初のプログラムのPInvoke宣言に参加します:

		public static extern bool InternetGetConnectedState(
			ref uint lpdwFlags,
			uint dwReserved
			);

あなたは、パラメータへの復帰を宣言し、それを使用する場合は、APIへの文のパラメータで0とすることができます。

uint flags = 0x0;
var isNetworkAvailable = InternetGetConnectedState(ref flags, 0);
...

最後に、ここではより完全な使用例を伴います:

using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Runtime.InteropServices;

namespace ConsoleApplication21
{
	class Program
	{
		[DllImport("wininet")]
		public static extern bool InternetGetConnectedState(
			ref uint lpdwFlags,
			uint dwReserved
			);

		static void Main(string[] args)
		{
			uint flags = 0x0;

			var isNetworkAvailable = InternetGetConnectedState(ref flags, 0);

			Console.WriteLine(string.Format("Network available: {0} ({1})", isNetworkAvailable.ToString(), flags.ToString()));
		}
	}
}

あなたは次の画面を見ることができます実行した後、コンピュータは、著者のは、現在ネットワークに接続して表しており、ネットワークの接続状態がINTERNET_RAS_INSTALLED&INTERNET_CONNECTION_LANです。

画像

リンク

  • InternetGetConnectedState機能
  • InternetGetConnectedState | Mディングルの砲撃プレイ

オリジナル:大列  現在のコンピュータのネットワーク接続状態を検出するために、InternetGetConnectedState APIを使用して、[C#の]


おすすめ

転載: www.cnblogs.com/petewell/p/11496008.html
おすすめ