社区
网络及通讯开发
帖子详情
请问如何启用和禁用网络连接?谢谢
huxiaoye
2004-03-02 05:35:09
请问如何启用和禁用网络连接?谢谢
...全文
102
2
打赏
收藏
请问如何启用和禁用网络连接?谢谢
请问如何启用和禁用网络连接?谢谢
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
2 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
sczyq
2004-06-15
打赏
举报
回复
15分,糟塌了我的贴子!
hzoll
2004-04-24
打赏
举报
回复
这个也是前人的辛苦成果,好久以前的了,我收藏了一下:)
但好象只能在NT结构的系统中,我自己用,好使的,不过不是紧用网络连接,而是紧用的网卡!
cfgmgr32.h需要安装编写驱动程序的程序,里头有这个文件,考过来,还有cfgmgr32.h里用到的几个文件当然也要考过来啦:)
/*
还是帖出来吧, 我可是花了三天时间才搞定了.
*/
#include <SetupAPI.h>
#include <cfgmgr32.h> // 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 DeviceName[200];
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 = "<Unknown Device>";
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;
}
你说怎么使用两个函数:
TList *NetCardList = new TList;
EunmNetCards(NetCardList);
// 列出
for (int i=0; i<NetCardList->Count; i++)
{
PNetCardStruct AStruct = (PNetCardStruct)NetCardList->Items[i];
Memo1->Lines->Add("---------------");
Memo1->Lines->Add("网卡序号:" + IntToStr(i));
Memo1->Lines->Add("网卡设备号: " + IntToStr((int)AStruct->Id));
Memo1->Lines->Add("网卡设备名: " + AStruct->Name);
if (AStruct->Disabled) Memo1->Lines->Add("状态: 禁用");
else Memo1->Lines->Add("状态: 启用");
}
// 删除由EunmNetCards分配的内存
for (int i=0; i<NetCardList->Count; i++)
delete (PNetCardStruct)NetCardList->Items[i];
禁用序号为n的网卡:
NetCardStateChange(NetCardList->Items[n],false);
关于android,谁能告诉我什么是移动数据开/关?
谢谢
参阅此:以编程方式在Android中
启用
-
禁用
数据连接[^]
RAR_for_Android_Premium_v5.80.apk
Android版RAR RARLAB的RAR是一款多功能,原始,免费,简单,轻松,快速的压缩程序,存档器,助手,提取器,管理器,甚至是基本的文件浏览器。 RAR可以创建RAR和ZIP,并解压缩RAR,ZIP,TAR,GZ,BZ2,XZ,7z,ISO,ARJ档案。功能列表包括损坏的ZIP和RAR文件的修复命令,与RARLAB的WinRAR基准兼容的基准功能,恢复记录,常规和恢复卷,加密,可靠的归档文件,利用多个CPU内核压缩数据。 除了标准的ZIP文件外,解压缩功能还支持带有BZIP2,LZMA,PPMd和XZ压缩的ZIP和ZIPX,也作为受密码保护的ZIP。Unrar命令可用于所有版本的RAR归档文件,包括最新的RAR5,受密码保护的文件和多部分文件。 RAR显示广告以支付开发成本。您可以在选项菜单中付款以关闭广告。RAR请求访问网络,查看
网络连接
和计费以显示或
禁用
广告。 如果您希望帮助我们将RAR转换为您的语言,请在“ RAR Extras”部分中下载适用于Android的RAR 文件,并按照readme.txt中的说明进行操作。
谢谢
。 什么是新的: ZIP提取和测试性能在以前的版本中有所下降。现在恢复正常值。 增加了对另一种TAR格式档案的支持。 如果还
启用
了“测试存档文件”和“创建单独的存档”,则ZIP存档可能会失败。立即修复。 Mod信息: 高级功能已解锁; 完全删除帮助文件夹; 优化的图形/ zipalign;
禁用
分析。
c语言
启用
网络网络,c++ 以编程方式
禁用
/
启用
网络接口
我试图提出一个解决方案,以编程方式
启用
/
禁用
网卡 – 我做了大量的研究,在XP和Vista环境中似乎都不是一个可行的解决方案。我在说的是,如果您进入控制面板的“
网络连接
”,右键单击并选择
启用
或
禁用
。理想情况下,我想使用一个图书馆,但如果更糟糕的是,我可以打电话给一个命令行程序,但绝对是最坏的情况。这是我迄今为止所尝试过的,何处/为什么他们失败:这个上一篇文章:列出了几种方法 – 第一种是使用net...
计算机可用
网络连接
不上,电脑
网络连接
不可用?学会这招,轻松解决
原标题:电脑
网络连接
不可用?学会这招,轻松解决上面电脑用久了总是会出现各种各样的问题,最常见的要数网络问题了,有不少用户反映说
网络连接
不可用,上不了网很烦 躁,那么如果用户遇到Win10
网络连接
不可用该怎么办呢?下面,小编跟大家讲解win10网络不可用的处理方法。尽管Win10被称为迄今为止最好的Windows操作系统,不过在某些细节方面其实还存在一些不足。比如,在Win7和Win10系统中,很少...
虚拟机ipv4和6都没访问权限_无线
网络连接
ipv4/6都无网络访问权限该怎么解决
1、
网络连接
受限或出现黄色感叹号时,右击任务栏“
网络连接
”图标,从其右键菜单选择“网络和共享中心”。2、待进入“网络和共享中心”界面后,点击窗口左上角的“更改适配器设置”按钮,如图所示3、此时将打开“
网络连接
”窗口,右击“网络受限”的连接,从其右键菜单中选择“
禁用
”项。4、待对应的
网络连接
图标被
禁用
后,再次右击此
网络连接
,从其右键菜单中选择“
启用
”项。5、此时对于“本地连接”而言,将自动从网关获取...
网络及通讯开发
1,317
社区成员
8,874
社区内容
发帖
与我相关
我的任务
网络及通讯开发
C++ Builder 网络及通讯开发
复制链接
扫一扫
分享
社区描述
C++ Builder 网络及通讯开发
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章