使用
RasEnumConnections
RasGetConnectStatus

解决方案 »

  1.   

    如果是局域网通过代理服务器上网,应该算连接到Internet,但如果用你这种方法就是否了!
      

  2.   

    我用VC6,我用下面的代码:
    LPDWORD flags;
    BOOL m_bConnected=::InternetGetConnectedState(flags,NULL);
    奇怪的是无论我上不上网,m_bConnected总是TRUE。我没有拨号,也没设置代理服务器,结果也是这样,谁能告诉我为什么?
    另外,MODEM忙,但不是用于上网是什么状态?
      

  3.   

    enmity(真我的风采)能不能给个例子?
      

  4.   

    to winsock:  VC5不应该不可以使用的,包含头文件即可了#include <afxinet.h>
    to neatbeer(网络咖啡) :
    那是因为你的机器上装有Modem或者网卡
      

  5.   

    如果我不上网,但装有Modem也会返回真吗?那这个函数还有什么用?
      

  6.   

    internetgetconnectstatus返回的东东在flag里,并且是一些标志位
    要用位掩码方式来确定,比如验证是否modem连线online
    DWORD flags;
    ::InternetGetConnectedState(&flags,NULL);
    if ((flags&INTERNET_CONNECTION_MODEM)== INTERNET_CONNECTION_MODEM){
       TRACE0("现在用modem连上了网");
    }
      

  7.   

    to enmity(真我的风采):谢谢
    to panda_w(好想睡啊!),jazzrabbit(爵士兔):
          那,网卡的问题怎么解决?我原来的程序是这样的:
          LPDWORD flags;
          BOOL m_bConnected=::InternetGetConnectedState(flags,NULL);      switch(*flags)
    {
    case INTERNET_CONNECTION_MODEM:
    SetDlgItemText(IDC_EDIT_METHOD,"拨号上网");
    break;
    case INTERNET_CONNECTION_LAN:
    SetDlgItemText(IDC_EDIT_METHOD,"通过局域网上网");
    break;
    case INTERNET_CONNECTION_PROXY:
    SetDlgItemText(IDC_EDIT_METHOD,"通过代理服务器上网");
    break;
    case INTERNET_CONNECTION_MODEM_BUSY:
    SetDlgItemText(IDC_EDIT_METHOD,"modem正忙,但不是用于上网");
    break;
    default:
    SetDlgItemText(IDC_EDIT_METHOD,"未知情况");
    }
    我通过代理服务器上网的时候,显示“未知情况”,跟踪发现*flag=0x00000056,而上面四个值好像是0 2 4 8
      

  8.   

    要这么复杂吗???
    用代码ping一下几个特别的ip,或解几个域名成功的话那不就是连上的INTERNET吗,而且这个方法就不管你通过什么上网的啦。
      

  9.   

    一样的.就是用标志掩码去屏蔽就行了.#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,"未知情况");
    明白了不?