如何编程实现禁用和启用网卡 如题 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 #include "stdafx.h" #include <tchar.h> #include <windows.h> #include <setupapi.h> #pragma comment (lib,"setupapi") #define UnknownDevice TEXT("") 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; } 执行到这里就会死机if (!SetupDiCallClassInstaller(DIF_PROPERTYCHANGE,hDevInfo,&DeviceInfoData)){printf("SetClassInstallParams");SetCursor(hCursor);return TRUE;} why? 【转】一个男人关心的东西决定了他的层次 -==- 谢谢这几天短信我的朋友,我在北京很好!!! MFC 定时器的使用 【高手请进】一小段代码,通过HOST获取IP问题 怎么运行EXE程序并指定位置 如何得到窗口大小 从矩阵 中得到旋转 四元数!!急 VC用MSXML访问webservice 请问取得本机IP的API函数是什么,谢谢。 我这里有<<龙族>>的源码 谁要 window9x和windowNT的API,Shell不兼容? 散分100,鼓励那些还没结帖的朋友,快快结帖 关于树的问题!!请各位大虾帮帮忙!!!
#include <tchar.h>
#include <windows.h>
#include <setupapi.h> #pragma comment (lib,"setupapi") #define UnknownDevice TEXT("") 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;
}
if (!SetupDiCallClassInstaller(DIF_PROPERTYCHANGE,
hDevInfo,
&DeviceInfoData))
{
printf("SetClassInstallParams");
SetCursor(hCursor);
return TRUE;
} why?