我从网上摘了这个代码,可以正常编译,但无奈不知怎么调用它来断网和联网,请高手指点一下。代码如下
#include   <tchar.h>         
#include   <windows.h>     
#include   <setupapi.h> #pragma   comment   (lib, "setupapi") #define   UnknownDevice   TEXT( " <Unknown   Device> ") HDEVINFO   hDevInfo   =   0; 
BOOL   StateChange(DWORD   NewState,   DWORD   SelectedItem,HDEVINFO   hDevInfo) 

        SP_PROPCHANGE_PARAMS   PropChangeParams   =   {sizeof(SP_CLASSINSTALL_HEADER)}; 
        SP_DEVINFO_DATA   DeviceInfoData   =   {sizeof(SP_DEVINFO_DATA)}; 
        HCURSOR   hCursor;         // 
        //   This   may   take   a   while   :^( 
        // 
        hCursor   =   SetCursor(LoadCursor(NULL,   IDC_WAIT));         // 
        //   Get   a   handle   to   the   Selected   Item. 
        // 
        if   (!SetupDiEnumDeviceInfo(hDevInfo,SelectedItem,&DeviceInfoData)) 
        { 
                printf( "EnumDeviceInfo "); 
                return   FALSE; 
        }         // 
        //   Set   the   PropChangeParams   structure. 
        // 
        PropChangeParams.ClassInstallHeader.InstallFunction   =   DIF_PROPERTYCHANGE; 
        PropChangeParams.Scope   =   DICS_FLAG_GLOBAL; 
        PropChangeParams.StateChange   =   NewState;         if   (!SetupDiSetClassInstallParams(hDevInfo, 
                &DeviceInfoData, 
                (SP_CLASSINSTALL_HEADER   *)&PropChangeParams, 
                sizeof(PropChangeParams))) 
        { 
                printf( "SetClassInstallParams "); 
                SetCursor(hCursor); 
                return   FALSE; 
        }         // 
        //   Call   the   ClassInstaller   and   perform   the   change. 
        // 
        if   (!SetupDiCallClassInstaller(DIF_PROPERTYCHANGE, 
                hDevInfo, 
                &DeviceInfoData)) 
        { 
                printf( "SetClassInstallParams "); 
                SetCursor(hCursor); 
                return   TRUE; 
        }         SetCursor(hCursor); 
        return   TRUE; 

BOOL   IsClassNet(   GUID   *   ClassGuid   ) 

        #define   MAX_NUM     50         HKEY   hKeyClass; 
        LONG   lRet; 
        char   ClassType[MAX_NUM]; 
        char   NetClass[MAX_NUM]   =   "Net "; 
        DWORD   dwLength   =   MAX_NUM,dwType   =   REG_SZ;         
        if   (hKeyClass   =   SetupDiOpenClassRegKey(ClassGuid,KEY_READ)) 
        { 
                lRet   =   RegQueryValueEx(hKeyClass, 
                        TEXT( "Class "), 
                        NULL,   &dwType,   LPBYTE(ClassType),   &dwLength); 
                RegCloseKey(hKeyClass);                 if   (lRet   !=   ERROR_SUCCESS) 
                        return   FALSE;                 if   (!strcmp(ClassType,NetClass)) 
                        return   TRUE; 
        }                                                                         return   FALSE; 
} int   main(int   argc,   char*   argv[]) 

        if   (INVALID_HANDLE_VALUE   ==   (hDevInfo   = 
                                SetupDiGetClassDevs(NULL,NULL,0, 
                                DIGCF_PRESENT|DIGCF_ALLCLASSES))) 
        { 
                  printf( "GetClassDevs "); 
                  return   0; 
        }         DWORD   i,   Status,   Problem; 
        SP_DEVINFO_DATA   DeviceInfoData   =   {sizeof(SP_DEVINFO_DATA)}; 
        HKEY   hKeyClass; 
        char   DeviceName[200]; 
        for   (i=0;SetupDiEnumDeviceInfo(hDevInfo,i,&DeviceInfoData);i++) 
        { 
                if   (IsClassNet(&DeviceInfoData.ClassGuid)) 
                { 
                        printf( "   the   class 's   index   is   %d\n ",i); 
                                                      // 
                        //DICS_DISABLE--> 禁用网络 
                        //DICS_ENABLE---> 恢复网络 
                        // 
                        if   (StateChange(DICS_ENABLE,i,hDevInfo)) 
                                printf( "NetWork   stopped ");                 } 
        }         return   0; 
}

解决方案 »

  1.   

    //DICS_DISABLE--> 禁用网络  
      //DICS_ENABLE---> 恢复网络  
      //  
      if (StateChange(DICS_ENABLE,i,hDevInfo))  
      printf( "NetWork stopped ");  这里写的不是很清楚吗?
      

  2.   

    我将 if (StateChange(DICS_ENABLE,i,hDevInfo))   
      printf( "NetWork stopped ");   
    里面的DICS_ENABLE修改成DICS_DISABLE,无效,什么都不会发生,修改回来,还是无效,什么输出都没,而且还不会断网····请大牛们试一试再回帖啊···小弟在这里谢谢了
      

  3.   

    还有,编译出错了···
    D:\Program Files\Microsoft Visual Studio\MyProjects\12\12.cpp(8) : error C2146: syntax error : missing ';' before identifier 'hDevInfo'
    D:\Program Files\Microsoft Visual Studio\MyProjects\12\12.cpp(8) : error C2501: 'HDEVINFO' : missing storage-class or type specifiers
    D:\Program Files\Microsoft Visual Studio\MyProjects\12\12.cpp(8) : fatal error C1004: unexpected end of file found
    执行 cl.exe 时出错.