C# 我怎样才能知道国家是什么;“连接”;通过InternetGetConnectedState

C# 我怎样才能知道国家是什么;“连接”;通过InternetGetConnectedState,c#,connection,wifi,state,C#,Connection,Wifi,State,我正在创建一个应用程序,该应用程序将在连接状态为未连接时自动连接到WiFi 我对它使用了wininet.dll,并使用了它的InternetGetConnectedState()方法 但是,我遇到了一个问题,每当我连接到WiFi并且连接状态为“连接”时,InternetGetConnectedState()将返回false(表示未连接),并且它将尝试一次又一次地连接到WiFi 代码如下: while (true) { if (InternetGetConnectedState(out C

我正在创建一个应用程序,该应用程序将在连接状态为未连接时自动连接到WiFi

我对它使用了
wininet.dll
,并使用了它的
InternetGetConnectedState()
方法

但是,我遇到了一个问题,每当我连接到WiFi并且连接状态为“连接”时,
InternetGetConnectedState()
将返回false(表示未连接),并且它将尝试一次又一次地连接到WiFi

代码如下:

while (true) {
    if (InternetGetConnectedState(out ConState,0))
    {
        (do something else)
    }
    else
    {
        (connect to wifi)
    }
}

是否有其他方法可用于了解连接的
状态
,或者是否应使用相同的方法等待状态更改?任何帮助都将不胜感激。

我可能弄错了,但在对wininet.dll的引用中指出:“(InternetGetConnectedState)如果存在活动调制解调器或LAN Internet连接,则返回TRUE;如果没有Internet连接,则返回FALSE”,请参阅。我认为这个dll可能无法识别wifi网络。否则,该声明将在其解释中包含“路由器”。您可以调用GetLastError函数以获取其他信息。

提供有关网络状态的所有信息。您可以使用演示代码(Release文件夹中有exe)查看其功能。

非常感谢您的回答,但我发现NetWork List Manager中的状态不包含“连接”状态。或者我还没有找到它?对于您的任务(检测internet连接何时可用),您不需要此状态。NLM提供以下状态:断开连接-无网络连接;ipv4/ipv6 Internet-您有Internet连接。其他-没有互联网,但可能有本地连接。因此,一旦网络状态更改为ipv6/ipv4 Internet,您就有了Internet连接。当你上网时,你不需要调用任何其他函数来检测。