2012-01-03 27 views

回答

0

說不上COM端口:

他們不能從NSIS直接檢測這麼寫簡單的插件用C將檢測端口通過它的數量。

這是我的基本思想是:

void GetListOfLocalPorts(CList<CString, CString>& o_lstPorts) 
{ 
for(int i = 1; i <= 99; i++) 
{ 
    DCB dcb; 
    HANDLE hCom = NULL; 
    BYTE byPort = (BYTE)i; 

    CString strPort; 
    strPort.Format("COM%d", i); 

    CString strCom = (CString)"\\\\.\\" + strPort; 
    SetErrorMode(SEM_FAILCRITICALERRORS); 

    try 
    { 
     hCom = CreateFile(strCom, 0, 0, NULL, OPEN_EXISTING, 0, NULL); 

     if (hCom == INVALID_HANDLE_VALUE) 
      continue; 
     BOOL fSuccess = GetCommState(hCom, &dcb); 
     CloseHandle(hCom); 
     if (!fSuccess) 
      continue; 

    // Port exists on this machine 
     o_lstPorts.AddTail(strPort); 
    } 
    catch(...) 
    { 
    } 
} 
} 
+0

這段代碼很容易與系統插件通話,但它只是本地系統,問題是關於遠程系統。我想WMI可能會工作... – Anders 2012-01-04 14:12:00

+0

如何在我的.nsi文件中使用上述代碼。請讓我知道 – user1234 2012-01-06 08:18:44

+0

@Slappy - 您好Slappy,我實際上需要本地系統端口可用性檢查本身的幫助。你可以讓我知道如何將你的代碼或我的代碼(我有Java代碼)轉換爲插件,以及如何在我的.nsi文件中使用它 – user1234 2012-01-09 06:54:50