我写是因为我在互联网上找不到任何答案。我正在用 C# 在 WLAN 上编写一个项目(使用托管 C++)。考虑连接到网络的给定接口(网卡),有没有办法知道接口连接到网络多长时间?
换句话说,我想知道您在 Windows 7 中的连接信息中看到的时间(trayicon -> 打开网络和共享中心)。
我希望我很清楚,我为我糟糕的英语道歉。
我写是因为我在互联网上找不到任何答案。我正在用 C# 在 WLAN 上编写一个项目(使用托管 C++)。考虑连接到网络的给定接口(网卡),有没有办法知道接口连接到网络多长时间?
换句话说,我想知道您在 Windows 7 中的连接信息中看到的时间(trayicon -> 打开网络和共享中心)。
我希望我很清楚,我为我糟糕的英语道歉。
可能是您正在寻找 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 上总是返回零,不知道其他平台。