




免费预览已结束,剩余2页可下载查看
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
怎么通过程序控制网络连接的禁用和启用/* 还是帖出来吧, 我可是花了三天时间才搞定了. */ #include #include / cfgmgr32.h 在Microsoft Windows 2000 DDK 中. / 要用 CM_Get_DevNode_Status(.) 来查询状态. /- typedef struct NetCardStruct DWORD Id; / 网卡设备号 AnsiString Name; / 网卡名 bool Disabled; / 当前是否禁用 bool Changed; / 是否更改过 TNetCardStruct; typedef TNetCardStruct* PNetCardStruct; /- / EnumNetCards 枚举出网卡 /- void _fastcall EnumNetCards(TList *NetDeviceList) AnsiString DevValue; PNetCardStruct NetCard; DWORD Status, Problem; LPTSTR Buffer = NULL; DWORD BufSize = 0; HDEVINFO hDevInfo = 0; if (INVALID_HANDLE_VALUE = (hDevInfo = SetupDiGetClassDevs(NULL,NULL,0,DIGCF_PRESENT|DIGCF_ALLCLASSES) return; SP_DEVINFO_DATA DeviceInfoData = sizeof(SP_DEVINFO_DATA); HKEY hKeyClass; char DeviceName200; for (DWORD DeviceId=0; SetupDiEnumDeviceInfo(hDevInfo,DeviceId,&DeviceInfoData); DeviceId+) if (CM_Get_DevNode_Status(&Status, &Problem, DeviceInfoData.DevInst,0) != CR_SUCCESS) continue; DevValue.SetLength(0); if (GetRegistryProperty(hDevInfo, &DeviceInfoData, SPDRP_CLASS , &Buffer, (PULONG)&BufSize) DevValue = Buffer; if (DevValue = Net) DevValue.SetLength(0); if (GetRegistryProperty(hDevInfo, &DeviceInfoData, SPDRP_ENUMERATOR_NAME , &Buffer, (PULONG)&BufSize) DevValue = Buffer; if (DevValue != ROOT) NetCard = new TNetCardStruct; NetCard-Id = DeviceId; NetCard-Name = ; if (GetRegistryProperty(hDevInfo, &DeviceInfoData, SPDRP_DRIVER , &Buffer, (PULONG)&BufSize) if (GetRegistryProperty(hDevInfo, &DeviceInfoData, SPDRP_DEVICEDESC , &Buffer, (PULONG)&BufSize) NetCard-Name = Buffer; NetCard-Disabled = (Status & DN_HAS_PROBLEM) & (CM_PROB_DISABLED = Problem); NetCard-Changed = false; NetDeviceList-Add(NetCard); /- bool _fastcall GetRegistryProperty(HDEVINFO DeviceInfoSet, PSP_DEVINFO_DATA DeviceInfoData, ULONG Property, PVOID Buffer, PULONG Length) while (!SetupDiGetDeviceRegistryProperty(DeviceInfoSet, DeviceInfoData, Property, NULL, (BYTE *)*(TCHAR *)Buffer, *Length, Length) if (GetLastError() = ERROR_INSUFFICIENT_BUFFER) if (*(LPTSTR *)Buffer) LocalFree(*(LPTSTR *)Buffer); *(LPTSTR *)Buffer = (PCHAR)LocalAlloc(LPTR,*Length); else return false; return (*(LPTSTR *)Buffer)0; /- / NetCardStateChange 网卡的启用与禁用 / NetCardPoint 是 PNetCardStruct 的指针. / Enabled true = 启用 false = 禁用 /- bool _fastcall NetCardStateChange(void * NetCardPoint, bool Enabled) PNetCardStruct NetCard = (PNetCardStruct)NetCardPoint; DWORD DeviceId = NetCard-Id; HDEVINFO hDevInfo = 0; if (INVALID_HANDLE_VALUE = (hDevInfo = SetupDiGetClassDevs(NULL,NULL,0,DIGCF_PRESENT|DIGCF_ALLCLASSES) return false; SP_DEVINFO_DATA DeviceInfoData = sizeof(SP_DEVINFO_DATA); DWORD Status, Problem; if (!SetupDiEnumDeviceInfo(hDevInfo,DeviceId,&DeviceInfoData) return false; if (CM_Get_DevNode_Status(&Status, &Problem, DeviceInfoData.DevInst,0) != CR_SUCCESS) return false; SP_PROPCHANGE_PARAMS PropChangeParams = sizeof(SP_CLASSINSTALL_HEADER); PropChangeParams.ClassInstallHeader.InstallFunction = DIF_PROPERTYCHANGE; PropChangeParams.Scope = DICS_FLAG_GLOBAL; if (Enabled) if (!(Status & DN_HAS_PROBLEM) & (CM_PROB_DISABLED = Problem) NetCard-Disabled = false; return false; PropChangeParams.StateChange = DICS_ENABLE; else if (Status & DN_HAS_PROBLEM) & (CM_PROB_DISABLED = Problem) NetCard-Disabled = true; return false; if (!(Status & DN_DISABLEABLE) & (CM_PROB_HARDWARE_DISABLED != Problem) return false; PropChangeParams.StateChange = DICS_DISABLE; if (!SetupDiSetClassInstallParams(hDevInfo, &DeviceInfoData, (SP_CLASSINSTALL_HEADER *)&PropChangeParams, sizeof(PropChangeParams) return false; if (!SetupDiCallClassInstaller(DIF_PROPERTYCHANGE, hDevInfo, &DeviceInfoData) return false; if (CM_Get_DevNode_Status(&Status, &Problem, DeviceInfoData.DevInst,0) = CR_SUCCESS) NetCard-Disabled = (Status & DN_HAS_PROBLEM) & (CM_PROB_DISABLED = Problem); return true; /试试这个:/NetCard.h#include stdafx.h#include #include #include #define UnknownDevice TEXT()BOOL StateChange(DWORD NewState, DWORD SelectedItem,HDEVINFO hDevInfo);BOOL IsClassNet( GUID * ClassGuid );/NetCard.cpp#include stdafx.h#include NetCard.hBOOL 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 50HKEY hKeyClass;LONG lRet;char ClassTypeMAX_NUM;char NetClassMAX_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;/调用/ TODO: Add your control notificat
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 智能化发展合作承诺书范文6篇
- 2025-2030区块链技术在供应链金融中的落地应用与风险控制研究
- 2025-2030化工管道焊接机器人防腐蚀工艺报告
- 2025-2030制造业自动化行业市场供需分析及投资评估风险评估研究
- 员工绩效考核评价表模板业绩与能力评估
- 安全管理a考试题库及答案解析
- 场地租赁协议签署条款及租金支付方式说明
- 2025-2030冷链物流温控技术突破与生鲜电商损耗率改善相关性分析报告
- 文物消防安全考试题库及答案解析
- 2025-2030冷链物流基础设施建设需求与投资回报周期研究报告
- 2025年学前卫生学自考试题及答案
- 商业店铺施工方案
- 新车车辆交接协议书范本
- 工程招标代理机构自查整改报告范文
- 心源性脑栓塞治疗指南
- 2025-2026学年接力版(2024)小学英语四年级上册(全册)教学设计(附目录)
- 妇女常见疾病防治讲座
- 厂房屋顶分布式光伏项目可行性研究报告
- 供货进度保证措施方案
- 私人财产转移协议书范本
- DB3301∕T 0396-2023 大型商业综合体消防安全管理规范
评论
0/150
提交评论