2012年10月16日星期二

IsNetworkAlive.Cpp


//判断是否联网的几种办法。

#include <windows.h>

#include <Intshcut.h>
#pragma comment (lib,"Url.lib")

#include <Sensapi.h>
#pragma comment (lib,"Sensapi.lib")

#include <Wininet.h>
#pragma comment (lib,"Wininet.lib")

int _tmain(int argc, char* argv[])
{
    ////////////////////////////////////////////////////////////////////////////////

    /*
    Determines whether the system is connected to the Internet.
    Returns TRUE if the local system is not currently connected to the Internet.
    Returns FALSE if the local system is connected to the Internet or
    if no attempt has yet been made to connect to the Internet.
    总是返回false。不准确,不可用。
    */

    bool b = InetIsOffline(0);
    /*if (b == true)
    {
        MessageBox(0,L"没有联网",0,0);
    }
    else
    {
        MessageBox(0,L"已经联网",0,0);
    }*/

    ////////////////////////////////////////////////////////////////////////////////

    DWORD d;
    b = IsNetworkAlive(&d);  
    if (GetLastError() == 0)
    {
        if (b == true)
        {        

            if ((d & NETWORK_ALIVE_LAN) == NETWORK_ALIVE_LAN)
            {
                MessageBox(0,L"联网方式:NETWORK_ALIVE_LAN",L"已经联网",0);
            }

            if ((d & NETWORK_ALIVE_WAN) == NETWORK_ALIVE_WAN)
            {
                MessageBox(0,L"联网方式:NETWORK_ALIVE_WAN",L"已经联网",0);
            }

            if ((d & NETWORK_ALIVE_AOL) == NETWORK_ALIVE_AOL)
            {
                MessageBox(0,L"联网方式:NETWORK_ALIVE_AOL",L"已经联网",0);
            }

        }
        else if (b == false)
        {
            MessageBox(0,L"没有联网",0,0);
        }/**/
    }

    ////////////////////////////////////////////////////////////////////////////////

    b = InternetGetConnectedState(&d,0);
    if (b == true)
    {      

        if ((d & INTERNET_CONNECTION_MODEM) ==INTERNET_CONNECTION_MODEM)
        {
            MessageBox(0,L"联网方式:拨号上网",L"已经联网",0);
        }

        if ((d & INTERNET_CONNECTION_LAN) ==INTERNET_CONNECTION_LAN)
        {
            MessageBox(0,L"联网方式:通过局域网",L"已经联网",0);
        }

        if ((d & INTERNET_CONNECTION_PROXY) ==INTERNET_CONNECTION_PROXY)
        {
            MessageBox(0,L"联网方式:代理",L"已经联网",0);
        }

        //if ((d & INTERNET_CONNECTION_MODEM_BUSY) ==INTERNET_CONNECTION_MODEM_BUSY) //这个不会出现。
        //{
        //    MessageBox(0,L"联网方式:调制调解器繁忙",L"已经联网",0);
        //}      

        if ((d & INTERNET_CONNECTION_CONFIGURED) ==INTERNET_CONNECTION_CONFIGURED)
        {
            MessageBox(0,L"联网方式:INTERNET_CONNECTION_CONFIGURED",L"已经联网",0);
        }

    }
    else if (b == false)
    {
        MessageBox(0,L"没有联网",0,0);

        //下面这两个有可能会出现。

        if ((d & INTERNET_RAS_INSTALLED) ==INTERNET_RAS_INSTALLED)
        {
            MessageBox(0,L"原因:INTERNET_RAS_INSTALLED",L"没有联网",0);//这个会运行。
        }

        if ((d & INTERNET_CONNECTION_OFFLINE) ==INTERNET_CONNECTION_OFFLINE)
        {
            MessageBox(0,L"断网",0,0); //这个不会显示。
        }

    }/**/

    ////////////////////////////////////////////////////////////////////////////////

    //这个函数也不行,总是返回ERROR_SUCCESS。
    b = InternetAttemptConnect(0);
    /*if(b == ERROR_SUCCESS)
    {
        MessageBox(0,L"已经联网",0,0);
    }
    else
    {
        MessageBox(0,L"没有联网",0,0);
    }*/

    ////////////////////////////////////////////////////////////////////////////////

   //这个函数也不行
   //BOOL InternetGoOnline(_In_  LPTSTR lpszURL, _In_  HWND hwndParent, _In_  DWORD dwFlags);

}

没有评论:

发表评论