Com Port auslesen
-
Hallo,
Weiß nicht genau ob ich hier richtig bin. kann auch sein das die frage ins API forum gehört.
Wie kann ich die vorhandenen Com-Ports in Windows auslesen?
-
Hallo,
HANDLE hSerial; AnsiString Device; for (int i = 0; i < 255; i++) { Device = "com" + IntToStr(i); hSerial = CreateFile( Device.c_str(), GENERIC_READ | GENERIC_WRITE, 0, 0, OPEN_EXISTING, 0, 0 ); if (hSerial == INVALID_HANDLE_VALUE) {} else { Memo->Lines->Add(Device + " belegt"); hSerial = NULL; } }
//Edit: Code-Tags vergessen
VlG
-
Danke,
funktioniert.
-
ohne Iteration:
void __fastcall TSerial::GetPortList(TStrings *PortList) { PortList->Clear(); std::auto_ptr<TRegistry> Reg(new TRegistry()); std::auto_ptr<TStrings> ValueNames(new TStringList()); Reg->RootKey = HKEY_LOCAL_MACHINE; if (Reg->OpenKeyReadOnly("\\HARDWARE\\DEVICEMAP\\SERIALCOMM")) { Reg->GetValueNames(ValueNames.get()); for (int i=0;i<ValueNames->Count;++i) { String KeyName = ValueNames->Strings[i]; if ( Reg->ReadString(KeyName) != "" ) { PortList->Add(Reg->ReadString(KeyName)); } else break; } Reg->CloseKey(); } else throw Exception("konnte COM-Ports aus Registry nicht lesen"); }