我正在使用installshield安裝服務。此服務配置爲在用戶重新啓動系統或登錄時開始使用。現在,我需要在PC中提供網絡連接時啓動應用程序。 有什麼辦法可以做到這一點?如何在網絡連接可用時啓動我的應用程序?
謝謝!
我正在使用installshield安裝服務。此服務配置爲在用戶重新啓動系統或登錄時開始使用。現在,我需要在PC中提供網絡連接時啓動應用程序。 有什麼辦法可以做到這一點?如何在網絡連接可用時啓動我的應用程序?
謝謝!
要檢查網絡連接,您可以撥打IsNetworkAlive。 下面是一個例子:
#include <stdio.h>
#include <tchar.h>
#include <Windows.h>
#include <Sensapi.h>
#pragma comment(lib, "Sensapi.lib")
int _tmain(int argv, char *argc[])
{
DWORD dwSens;
if (IsNetworkAlive(&dwSens) == FALSE)
{
printf("No network connection");
}
else
{
switch(dwSens)
{
case NETWORK_ALIVE_LAN:
printf("LAN connection available");
break;
case NETWORK_ALIVE_WAN:
printf("WAN connection available");
break;
default:
printf("Unknown connection available");
break;
}
}
return 0;
}
與Vista開始,您也可以看看的Network list manager。這會給你更詳細的回答:
你卡恩調用方法INetworkListManager::GetConnectivity檢查網絡連接:
#include <stdio.h>
#include <tchar.h>
#include <Windows.h>
#include <Netlistmgr.h>
#include <atlbase.h>
int _tmain(int argv, char *argc[])
{
printf("\n");
CoInitialize(NULL);
{
CComPtr<INetworkListManager> pNLM;
HRESULT hr = CoCreateInstance(CLSID_NetworkListManager, NULL,
CLSCTX_ALL, __uuidof(INetworkListManager), (LPVOID*)&pNLM);
if (SUCCEEDED(hr))
{
NLM_CONNECTIVITY con = NLM_CONNECTIVITY_DISCONNECTED;
hr = pNLM->GetConnectivity(&con);
if SUCCEEDED(hr)
{
if (con & NLM_CONNECTIVITY_IPV4_INTERNET)
printf("IP4: Internet\n");
if (con & NLM_CONNECTIVITY_IPV4_LOCALNETWORK)
printf("IP4: Local\n");
if (con & NLM_CONNECTIVITY_IPV4_SUBNET)
printf("IP4: Subnet\n");
if (con & NLM_CONNECTIVITY_IPV6_INTERNET)
printf("IP6: Internet\n");
if (con & NLM_CONNECTIVITY_IPV6_LOCALNETWORK)
printf("IP6: Local\n");
if (con & NLM_CONNECTIVITY_IPV6_SUBNET)
printf("IP6: Subnet\n");
}
}
}
CoUninitialize();
return 0;
}
嗨,感謝您的回答,但我正在尋找類似於註冊表項的地方,我可以註冊我的應用程序,以便在連接時由Windows啓動。 –
太好了...但沒有註冊表項;) –
您提供局域網連接狀態碼非常棒。真棒........ – Sid
您可以嘗試ping一個網站,例如谷歌,它是99,99%在線並對布爾值作出反應。
修改,並告訴您的網絡avilablity服務每一秒,因爲它到達你的系統,在你的代碼中做任何你想要的。
此外,您還可以創建一個定時器contorl和互聯網/網絡連接
你要什麼程序來啓動定期輪詢間隔一個exe?該服務已在運行...您想檢查網絡連接或互聯網連接嗎? –