BOOLEAN ConnectionAvailable(VOID) { if (WindowsVersion > WINDOWS_VISTA) { INetworkListManager* pNetworkListManager = NULL; // Create an instance of the INetworkListManger COM object. if (SUCCEEDED(CoCreateInstance(&CLSID_NetworkListManager, NULL, CLSCTX_ALL, &IID_INetworkListManager, &pNetworkListManager))) { VARIANT_BOOL isConnected = VARIANT_FALSE; VARIANT_BOOL isConnectedInternet = VARIANT_FALSE; // Query the relevant properties. INetworkListManager_get_IsConnected(pNetworkListManager, &isConnected); INetworkListManager_get_IsConnectedToInternet(pNetworkListManager, &isConnectedInternet); // Cleanup the INetworkListManger COM objects. INetworkListManager_Release(pNetworkListManager); // Check if Windows is connected to a network and it's connected to the internet. if (isConnected == VARIANT_TRUE && isConnectedInternet == VARIANT_TRUE) return TRUE; // We're not connected to anything //return FALSE; } } typedef BOOL(WINAPI *_InternetGetConnectedState)( __out PULONG lpdwFlags, __reserved ULONG dwReserved ); BOOLEAN isSuccess = FALSE; ULONG wininetState = 0; _InternetGetConnectedState InternetGetConnectedState_I = NULL; HMODULE inetHandle = NULL; __try { if (!(inetHandle = LoadLibrary(L"wininet.dll"))) __leave; InternetGetConnectedState_I = (_InternetGetConnectedState)GetProcAddress(inetHandle, "InternetGetConnectedState"); if (!InternetGetConnectedState_I) __leave; if (InternetGetConnectedState_I(&wininetState, 0)) isSuccess = TRUE; } __finally { if (inetHandle) { FreeLibrary(inetHandle); } } return isSuccess; }
BOOLEAN ConnectionAvailable(VOID) { INetworkListManager* networkListManager = NULL; if (SUCCEEDED(CoCreateInstance( &CLSID_NetworkListManager, NULL, CLSCTX_ALL, &IID_INetworkListManager, &networkListManager ))) { VARIANT_BOOL isConnected = VARIANT_FALSE; VARIANT_BOOL isConnectedInternet = VARIANT_FALSE; // Query the relevant properties. INetworkListManager_get_IsConnected(networkListManager, &isConnected); INetworkListManager_get_IsConnectedToInternet(networkListManager, &isConnectedInternet); // Cleanup the INetworkListManger COM objects. INetworkListManager_Release(networkListManager); // Check if Windows is connected to a network and it's connected to the internet. if (isConnected == VARIANT_TRUE && isConnectedInternet == VARIANT_TRUE) return TRUE; // We're not connected to anything } return FALSE; }
static BOOL ConnectionAvailable( VOID ) { if (WindowsVersion > WINDOWS_XP) { INetworkListManager *pNetworkListManager; // Create an instance of the INetworkListManger COM object. if (SUCCEEDED(CoCreateInstance(&CLSID_NetworkListManager, NULL, CLSCTX_ALL, &IID_INetworkListManager, &pNetworkListManager))) { VARIANT_BOOL isConnected = VARIANT_FALSE; VARIANT_BOOL isConnectedInternet = VARIANT_FALSE; // Query the relevant properties. INetworkListManager_get_IsConnected(pNetworkListManager, &isConnected); INetworkListManager_get_IsConnectedToInternet(pNetworkListManager, &isConnectedInternet); // Cleanup the INetworkListManger COM object. INetworkListManager_Release(pNetworkListManager); pNetworkListManager = NULL; // Check if Windows is connected to a network and it's connected to the internet. if (isConnected == VARIANT_TRUE && isConnectedInternet == VARIANT_TRUE) { // We're online and connected to the internet. return TRUE; } // We're not connected to anything. return FALSE; } // If we reached here, we were unable to init the INetworkListManager, fall back to InternetGetConnectedState. goto NOT_SUPPORTED; } else NOT_SUPPORTED: { DWORD dwType; if (InternetGetConnectedState(&dwType, 0)) { return TRUE; } else { LogEvent(NULL, PhFormatString(L"Updater: (ConnectionAvailable) InternetGetConnectedState failed to detect an active Internet connection (%d)", GetLastError())); } //if (!InternetCheckConnection(NULL, FLAG_ICC_FORCE_CONNECTION, 0)) //{ // LogEvent(PhFormatString(L"Updater: (ConnectionAvailable) InternetCheckConnection failed connection to Sourceforge.net (%d)", GetLastError())); // return FALSE; //} } return FALSE; }
BOOL ConnectionAvailable( VOID ) { BOOLEAN isSuccess = FALSE; HMODULE libraryHandle = NULL; INetworkListManager* networkListPtr = NULL; __try { if (WindowsVersion < WINDOWS_VISTA) { ULONG inetState = 0; _InternetGetConnectedState inetGetConnectedState_I = NULL; if (!(libraryHandle = LoadLibrary(L"wininet.dll"))) __leave; if (!(inetGetConnectedState_I = (_InternetGetConnectedState)GetProcAddress(libraryHandle, "InternetGetConnectedState"))) __leave; if (inetGetConnectedState_I(&inetState, 0)) isSuccess = TRUE; } else { VARIANT_BOOL isConnected = VARIANT_FALSE; VARIANT_BOOL isConnectedInternet = VARIANT_FALSE; // Create an instance of the INetworkListManger COM object. if (FAILED(CoCreateInstance(&CLSID_NetworkListManager, NULL, CLSCTX_ALL, &IID_INetworkListManager, &networkListPtr))) __leave; // Query the relevant properties. INetworkListManager_get_IsConnected(networkListPtr, &isConnected); INetworkListManager_get_IsConnectedToInternet(networkListPtr, &isConnectedInternet); // Check if Windows is connected to a network and it's connected to the internet. if (isConnected == VARIANT_TRUE && isConnectedInternet == VARIANT_TRUE) isSuccess = TRUE; } } __finally { if (libraryHandle) FreeLibrary(libraryHandle); if (networkListPtr) INetworkListManager_Release(networkListPtr); } return isSuccess; }