如何判段本机是否已经联上inter网?

解决方案 »

  1.   

    我是说VC里面怎样用最简单快捷的方法判断本机是否已经联上inter网?
      

  2.   

    为什么我的InternetGetConnectedState()总是等于0,输出"没有上网"
    //判断联网状态res并得到相应字符串StateStr
    BOOL InternetGetConnectedState(LPDWORD flag,char *StateStr)
    { BOOL res=InternetGetConnectedState(flag,1);//得到联网标识符res
      switch(res)
      { case INTERNET_CONNECTION_MODEM://与MODEM连接上网
         strcpy(StateStr,"与MODEM连接上网");
     break;
    case INTERNET_CONNECTION_LAN://与局域网连接上网
         strcpy(StateStr,"与局域网连接上网");
     break;
    case INTERNET_CONNECTION_PROXY://与防火墙连接上网
         strcpy(StateStr,"与防火墙连接上网");
     break;
    case INTERNET_CONNECTION_MODEM_BUSY://与MODEM连接繁忙
         strcpy(StateStr,"与MODEM连接繁忙");
     break;
    case 0://没有上网
    default://其他默认值
         strcpy(StateStr,"没有上网");
     break;
      }
      return res;
    }
      

  3.   

    #define   INCLUDEBIT(m,b)   ((m&b)==b)   
      DWORD   flags;   
      ::InternetGetConnectedState(&flags,NULL);   
      if   INCLUDEBIT(flags,INTERNET_CONNECTION_MODEM)     
      {   
                    SetDlgItemText(IDC_EDIT_METHOD,"拨号上网");   
        }else   if   INCLUDEBIT(flags,INTERNET_CONNECTION_LAN){   
                      SetDlgItemText(IDC_EDIT_METHOD,"通过局域网上网");   
      }   
      else   if     INCLUDEBIT(flags,INTERNET_CONNECTION_PROXY){   
                      SetDlgItemText(IDC_EDIT_METHOD,"通过代理服务器上网");   
      }else   if   INCLUDEBIT(flags,INTERNET_CONNECTION_MODEM_BUSY){   
                      SetDlgItemText(IDC_EDIT_METHOD,"modem正忙,但不是用于上网");   
      }   
        else                 SetDlgItemText(IDC_EDIT_METHOD,"未知情况");   
      

  4.   

    flags 才是返回参数。lpdwFlags 
    Address of a double-word variable where the connection description should be returned. Can be a combination of the following values:INTERNET_CONNECTION_MODEM  Local system uses a modem to connect to the Internet. 
    INTERNET_CONNECTION_LAN  Local system uses a local area network to connect to the Internet. 
    INTERNET_CONNECTION_PROXY  Local system uses a proxy server to connect to the Internet. 
    INTERNET_CONNECTION_MODEM_BUSY  Local system's modem is busy with a non-Internet connection. 
    检测相应的标志位是否设置。
      

  5.   

    我这样写的,既然说我没有上网 //判断上网
    DWORD flag;
    CString StateStr;
    InternetGetConnectedState(&flag,1);//得到联网标识符
    switch(flag)

    case INTERNET_CONNECTION_MODEM://与MODEM连接上网
    //strcpy(StateStr,"与MODEM连接上网");
    StateStr="与MODEM连接上网";
    break;
    case INTERNET_CONNECTION_LAN://与局域网连接上网
    //strcpy(StateStr,"与局域网连接上网");
    StateStr="与局域网连接上网";
    break;
    case INTERNET_CONNECTION_PROXY://与防火墙连接上网
    //strcpy(StateStr,"与防火墙连接上网");
    StateStr="与防火墙连接上网";
    break;
    case INTERNET_CONNECTION_MODEM_BUSY://与MODEM连接繁忙
    //strcpy(StateStr,"与MODEM连接繁忙");
    StateStr="与MODEM连接繁忙";
    break;
    case 0://没有上网
    default://其他默认值
    //strcpy(StateStr,"没有上网");
    StateStr="没有上网";
    break;
    }
    MessageBox(StateStr);
      

  6.   

    LZ 上面的代码有问题, 你没看清楚这个flag的值的说明, flag这个值是一些标志的组合, 不能象你那样用case去判断。 lpdwFlags 
    Address of a double-word variable where the connection description should be returned. Can be a combination of the following values:可能是以下几个标志的结合。所以要用位测试去判断, 参见8楼 xuzheng318(忧郁王子)  的代码