寻找正在连接中的网络连接
2017-11-19 10:32
423 查看
寻找正在连接中的网络连接,并开启网络连接的网络连接共享功能。
注意:要设置为管理员权限启动工程。否则EnableSharing会失败。
[cpp] view
plain copy
#include <Windows.h>
#include <NetCon.h>
#include <locale>
#include <stdio.h>
#pragma comment(lib,"Iphlpapi.lib")
#pragma comment(lib,"Rpcrt4.lib")//GUID
//启用、禁用网卡
#pragma comment(lib,"ole32.lib")
int main(int argc, char* argv[])
{
INetConnectionManager *pManager=NULL;
INetConnection *pConnection=NULL;
IEnumNetConnection *pEnum=NULL;
ULONG celtFetched;
INetSharingManager *pNetSharingManager=NULL;
INetConnectionProps *pProps=NULL;
INetSharingConfiguration *pConfiguration=NULL;
NETCON_PROPERTIES* properties=NULL;
NETCON_MEDIATYPE mediatype;
setlocale(LC_CTYPE, "");
CoInitialize(NULL);
CoCreateInstance(CLSID_ConnectionManager, NULL, CLSCTX_SERVER, IID_INetConnectionManager, (void**)&pManager);
if(pManager == NULL)
{
printf("获取接受失败,Error:%d\n",GetLastError());
return 0;
}
pManager->EnumConnections(NCME_DEFAULT, &pEnum);
while( pEnum->Next(1, &pConnection, &celtFetched) == S_OK )
{
pConnection->GetProperties(&properties);
if(properties->Status == NCS_CONNECTED)
{
if(properties->dwCharacter & NCCF_INCOMING_ONLY == 1)
{
wprintf(L"\"%S\"正处于连接状态,但是此连接无法共享!确保至少有2个网络连接!\n",properties->pszwName);
break;
}
CoCreateInstance(CLSID_NetSharingManager, NULL, CLSCTX_SERVER, IID_INetSharingManager, (void**)&pNetSharingManager);
if(pNetSharingManager == NULL)
{
printf("获取接受失败,Error:%d\n",GetLastError());
break;
}
wprintf(L"发现\"%s\"正处于连接状态。尝试开启共享...\n",properties->pszwName);
if(properties->MediaType >= NCM_DIRECT && properties->MediaType <=NCM_PPPOE)
{
pNetSharingManager->get_INetSharingConfigurationForINetConnection(pConnection,
&pConfiguration);
if(pConfiguration && SUCCEEDED(pConfiguration->EnableSharing(ICSSHARINGTYPE_PUBLIC)))
{
wprintf(L"成功设置\"%s\"为共享状态!\n",properties->pszwName);
break;
}
}
wprintf(L"设置\"%s\"共享状态失败!Error:%d\n",properties->pszwName,GetLastError());
}
}
if(pManager) pManager->Release();
if(pConnection) pConnection->Release();
if(pEnum) pEnum->Release();
if(pNetSharingManager) pNetSharingManager->Release();
if(pConfiguration) pConfiguration->Release();
CoUninitialize();
return 0;
}
注意:要设置为管理员权限启动工程。否则EnableSharing会失败。
[cpp] view
plain copy
#include <Windows.h>
#include <NetCon.h>
#include <locale>
#include <stdio.h>
#pragma comment(lib,"Iphlpapi.lib")
#pragma comment(lib,"Rpcrt4.lib")//GUID
//启用、禁用网卡
#pragma comment(lib,"ole32.lib")
int main(int argc, char* argv[])
{
INetConnectionManager *pManager=NULL;
INetConnection *pConnection=NULL;
IEnumNetConnection *pEnum=NULL;
ULONG celtFetched;
INetSharingManager *pNetSharingManager=NULL;
INetConnectionProps *pProps=NULL;
INetSharingConfiguration *pConfiguration=NULL;
NETCON_PROPERTIES* properties=NULL;
NETCON_MEDIATYPE mediatype;
setlocale(LC_CTYPE, "");
CoInitialize(NULL);
CoCreateInstance(CLSID_ConnectionManager, NULL, CLSCTX_SERVER, IID_INetConnectionManager, (void**)&pManager);
if(pManager == NULL)
{
printf("获取接受失败,Error:%d\n",GetLastError());
return 0;
}
pManager->EnumConnections(NCME_DEFAULT, &pEnum);
while( pEnum->Next(1, &pConnection, &celtFetched) == S_OK )
{
pConnection->GetProperties(&properties);
if(properties->Status == NCS_CONNECTED)
{
if(properties->dwCharacter & NCCF_INCOMING_ONLY == 1)
{
wprintf(L"\"%S\"正处于连接状态,但是此连接无法共享!确保至少有2个网络连接!\n",properties->pszwName);
break;
}
CoCreateInstance(CLSID_NetSharingManager, NULL, CLSCTX_SERVER, IID_INetSharingManager, (void**)&pNetSharingManager);
if(pNetSharingManager == NULL)
{
printf("获取接受失败,Error:%d\n",GetLastError());
break;
}
wprintf(L"发现\"%s\"正处于连接状态。尝试开启共享...\n",properties->pszwName);
if(properties->MediaType >= NCM_DIRECT && properties->MediaType <=NCM_PPPOE)
{
pNetSharingManager->get_INetSharingConfigurationForINetConnection(pConnection,
&pConfiguration);
if(pConfiguration && SUCCEEDED(pConfiguration->EnableSharing(ICSSHARINGTYPE_PUBLIC)))
{
wprintf(L"成功设置\"%s\"为共享状态!\n",properties->pszwName);
break;
}
}
wprintf(L"设置\"%s\"共享状态失败!Error:%d\n",properties->pszwName,GetLastError());
}
}
if(pManager) pManager->Release();
if(pConnection) pConnection->Release();
if(pEnum) pEnum->Release();
if(pNetSharingManager) pNetSharingManager->Release();
if(pConfiguration) pConfiguration->Release();
CoUninitialize();
return 0;
}
相关文章推荐
- 寻找正在连接中的网络连接
- 寻找正在连接中的网络连接
- 寻找正在连接中的网络连接,并开启网络连接的网络连接共享功能
- 三星NOTE7,N9300,N930F,N930FD解谷歌锁 正在检查网络连接FRP ON方法
- 网络共享别人的打印机,能连接,但出现未能打开,正在重试
- 原来无线可用,重装机子后,无线网络连接一直提示正在获取IP!
- 每个App都会用到的LoadingLayout(加载中、正在加载、无网络连接等......)
- 解决Macbook网络连接成功但是图标一直显示正在查找网络问题
- 每个App都会用到的LoadingLayout(加载中、正在加载、无网络连接等......)
- 无线网络连接一直显示“正在获取网络地址”
- 无线网络连接一直显示“正在获取网络地址”的解决办法
- windowsXP系统网络出现“正在连接”问题的解决方法
- DNS配置注意事项 正在连接网络
- 【xinfanqie】解决网络出现“正在连接”的问题
- android7 恢复出厂设置后一直正在检查网络连接开不了机
- iPhone锁屏网络连接关闭问题(iphone锁屏打开时请求网络失败)