C++ 判断当前网络是否正常,
标签:read known line query 同步 void 函数 init tps
#include
#include 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
C++ 判断当前网络是否正常,
标签:read known line query 同步 void 函数 init tps
原文地址:https://www.cnblogs.com/shenji/p/12934923.html
评论