2013-07-15 68 views
0

我正在使用installshield安裝服務。此服務配置爲在用戶重新啓動系統或登錄時開始使用。現在,我需要在PC中提供網絡連接時啓動應用程序。 有什麼辦法可以做到這一點?如何在網絡連接可用時啓動我的應用程序?

謝謝!

+0

你要什麼程序來啓動定期輪詢間隔一個exe?該服務已在運行...您想檢查網絡連接或互聯網連接嗎? –

回答

2

要檢查網絡連接,您可以撥打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; 
} 
+0

嗨,感謝您的回答,但我正在尋找類似於註冊表項的地方,我可以註冊我的應用程序,以便在連接時由Windows啓動。 –

+0

太好了...但沒有註冊表項;) –

+0

您提供局域網連接狀態碼非常棒。真棒........ – Sid

0

您可以嘗試ping一個網站,例如谷歌,它是99,99%在線並對布爾值作出反應。

0

修改,並告訴您的網絡avilablity服務每一秒,因爲它到達你的系統,在你的代碼中做任何你想要的。

此外,您還可以創建一個定時器contorl和互聯網/網絡連接

相關問題