当前位置:  开发笔记 > 编程语言 > 正文

如何确定您的WinForms应用程序是否可以使用Internet连接?

如何解决《如何确定您的WinForms应用程序是否可以使用Internet连接?》经验,为你挑选了3个好方法。

确定WinForms应用程序是否有可用Internet连接的最佳方法是什么.(当然是以编程方式)如果用户未连接到Internet,我想禁用/隐藏某些功能.



1> sbeskur..:

以下将确定您是否连接到网络,但这并不一定意味着您已连接到Internet:

NetworkInterface.GetIsNetworkAvailable() 

这是史蒂夫的代码的C#翻译似乎相当不错:

private static int ERROR_SUCCESS = 0;
public static bool IsInternetConnected() {
    long dwConnectionFlags = 0;
    if (!InternetGetConnectedState(dwConnectionFlags, 0))
        return false;

    if(InternetAttemptConnect(0) != ERROR_SUCCESS)
        return false;

    return true;
}


 [DllImport("wininet.dll", SetLastError=true)]
 public static extern int InternetAttemptConnect(uint res);


 [DllImport("wininet.dll", SetLastError=true)]
  public static extern bool InternetGetConnectedState(out int flags,int reserved); 



2> JaredPar..:

sbeskur的回复在InternetGetConnectedState的翻译中存在错误.参数都是DWORD(第一个是LPDWORD).这两个都转换为C#中的int(技术上,uint但int适用于大多数场景).

正确翻译如下.

[DllImport("wininet.dll", SetLastError=true)] 
public static extern bool InternetGetConnectedState(out int flags,int reserved);



3> QAZ..:

我不是ac#developer,但在C++中你可以使用Win32 API(特别是来自Wininet.dll),如下所示:

bool IsInternetConnected( void )
{
    DWORD dwConnectionFlags = 0;

    if( !InternetGetConnectedState( &dwConnectionFlags, 0 ) )
        return false;

    if( InternetAttemptConnect( 0 ) != ERROR_SUCCESS )
        return false;

    return true;
}

我认为这很简单地变成了c#

推荐阅读
mobiledu2402851173
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有