#include<iostream>
#include <Netlistmgr.h>
static bool checkIsNetwork()
{
Sleep(1000);
CoInitialize(NULL);
// 通过NLA接口获取网络状态
IUnknown *pUnknown = NULL;
BOOL bOnline = false;
//是否在线
HRESULT Result = CoCreateInstance(CLSID_NetworkListManager, NULL, CLSCTX_ALL, IID_IUnknown, (void **)&pUnknown); //创建一个com对象
if (SUCCEEDED(Result))
{
INetworkListManager *pNetworkListManager = NULL;
if (pUnknown)
Result = pUnknown->QueryInterface(IID_INetworkListManager, (void **)&pNetworkListManager);
if (SUCCEEDED(Result))
{
VARIANT_BOOL IsConnect = VARIANT_FALSE;
if (pNetworkListManager)
Result = pNetworkListManager->get_IsConnectedToInternet(&IsConnect);
if (SUCCEEDED(Result))
{
bOnline = (IsConnect == VARIANT_TRUE) ? true : false;
}
}
if (pNetworkListManager)
pNetworkListManager->Release();
}
if (pUnknown)
pUnknown->Release();
CoUninitialize();
return bOnline;
}
HANDLE g_hMutex = NULL;
//线程函数
DWORD WINAPI ThreadProc(LPVOID lpParameter)
{
Sleep(1000);
if (!checkIsNetwork())
{
WaitForSingleObject(g_hMutex, INFINITE); //等待线程同步
std::cout << "网络已断开" << std::endl;
ReleaseMutex(g_hMutex); //释放互斥量
}
else
{
WaitForSingleObject(g_hMutex, INFINITE);
std::cout << "网络正常" << std::endl;
ReleaseMutex(g_hMutex);
}
return 0L;
}
int main()
{
g_hMutex = CreateMutex(NULL, FALSE, NULL);//创建互斥量
while (1)
{
Sleep(1000);
//创建一个线程
HANDLE thread = CreateThread(NULL, 0, ThreadProc, NULL, 0, NULL);
//关闭线程
CloseHandle(thread);
}
return 0;
}
原文地址:https://blog.csdn.net/qq_31815979/article/details/105112948
原文链接: https://www.cnblogs.com/shenji/p/12934923.html
欢迎关注
微信关注下方公众号,第一时间获取干货硬货;公众号内回复【pdf】免费获取数百本计算机经典书籍
原创文章受到原创版权保护。转载请注明出处:https://www.ccppcoding.com/archives/197703
非原创文章文中已经注明原地址,如有侵权,联系删除
关注公众号【高性能架构探索】,第一时间获取最新文章
转载文章受原作者版权保护。转载请注明原作者出处!