Réponse acceptée !
tenter de les ouvrir avec CreateFile (COM1 à COM9 et LPT1 à LPT9) -> si ouverture a réussi, le port existe, le refermer -> si echec, faire GetLastError(), si ERROR_FILE_NOR_FOUND, le port n'existe pas sinon il est déjà utilisé.
cf mon prog de comm RS232 serial :
BOOL TComm::HasHardware(int Id) { // construction du nom TCHAR szComm[16]; wsprintf(szComm, _T("COM%d"), Id);
// tentative d'ouverture HANDLE hComm = CreateFile(szComm, GENERIC_READ | GENERIC_WRITE, 0, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_SYSTEM, NULL);
// si l'ouverture a réussie, on referme le port et on renvoie vrai if(hComm != INVALID_HANDLE_VALUE) { CloseHandle(hComm); return TRUE; }
// si l'ouverture a échoué, on récupère le code de l'erreur et on retourne DWORD dwError = GetLastError(); return (dwError != ERROR_FILE_NOT_FOUND); }
|