2

インターネットで答えが見つからなかったので書きます。WLAN 上の C# でプロジェクトを作成しています (マネージ C++ を使用)。ネットワークに接続されている特定のインターフェイス (ネットワーク カード) を考慮して、インターフェイスがネットワークに接続されている時間を知る方法はありますか?

つまり、Windows 7 の接続情報 (トレイ アイコン -> [ネットワークと共有センターを開く]) に表示される時刻を教えてください。

私が明確であったことを願っています。私の下手な英語についてお詫び申し上げます。

http://imageshack.us/photo/my-images/39/imaginenrz.png/

4

1 に答える 1

0

Windows のgetiftable()関数を探しているかもしれません。特定のネットワーク インターフェイスに関連するすべての情報を提供する winapi 関数です。

これがその良い例です

全体の構造の説明はこちら

msdnによると

dwLastChange

Type: DWORD

The length of time, in hundredths of seconds (10^-2 sec), starting from the last computer restart, when the interface entered its current operational state.

接続すると、接続状態からの時間が表示されます。

これは、c# でのこの関数の宣言です。

public static extern uint GetIfTable(IntPtr pIfTable, ref uint pdwSize, bool bOrder);

Declare Function GetIfTable Lib "iphlpapi.dll" (TODO) As TODO

        IPHelperTraslation.GetIfTable(IntPtr.Zero, ref size, false);

        IPHelperTraslation.GetIfTable(buf, ref size, false);

宣言の詳細については、 pinvoke.netを使用できます。

.Net フレームワークには簡単な方法があるようですが、期待どおりではありません

http://msdn.microsoft.com/en-us/library/system.net.networkinformation.operationalstatus.aspx

彼らがネットワーク ステータス検出をどのように実装したかを確認してください。私の推測では、ステータスが最後に変更されてからの時間をアプリケーションに記録する必要があります。

getifrow 関数も実際にテストしましたが、残念なことに、Win7 では常にゼロを返します。他のプラットフォームについては知りません。

于 2012-09-29T14:59:12.070 に答える