Пример кода(+)
Отправлено
F8 06 октября 2009, г. 22:41
В ответ на:
Ответ: (+) отправлено пользователем
F8 06 октября 2009, г. 22:39
void GetPortList(TStrings *PortList)
{
PortList->Clear();
TRegistry *reg = new TRegistry;
try
{
reg->RootKey = HKEY_LOCAL_MACHINE;
reg->Access = KEY_READ;
if(reg->OpenKey("\\HARDWARE\\DEVICEMAP\\SERIALCOMM",false))
{
try
{
TStringList *st = new TStringList;
try
{
reg->GetValueNames(st);
for(int i = (st->Count-1); i >= 0; i--)
{
PortList->Append(reg->ReadString(st->operator [](i)));
}
}
__finally
{
delete st;
}
}
__finally
{
reg->CloseKey();
}
}
}
__finally
{
delete reg;
}
}
void GetUSBPortList(TStrings *PortList)
{
PortList->Clear();
TRegistry *reg = new TRegistry;
try
{
reg->RootKey = HKEY_LOCAL_MACHINE;
reg->Access = KEY_READ;
if(reg->OpenKeyReadOnly("\\SYSTEM\\CurrentControlSet\\Enum\\USB\\Vid_c251&Pid_1305"))
{
TStringList *st = new TStringList;
reg->GetKeyNames(st);
reg->CloseKey();
for(int i = 0; i < st->Count; i++)
{
if(reg->OpenKeyReadOnly("\\SYSTEM\\CurrentControlSet\\Enum\\USB\\Vid_c251&Pid_1305\\" +
st->operator [](i) + "\\Device Parameters"))
{
PortList->Append(reg->ReadString("PortName"));
reg->CloseKey();
}
}
}
if(reg->OpenKeyReadOnly("\\SYSTEM\\CurrentControlSet\\Enum\\USB\\Vid_FFFF&Pid_1305"))
{
TStringList *st = new TStringList;
reg->GetKeyNames(st);
reg->CloseKey();
for(int i = 0; i < st->Count; i++)
{
if(reg->OpenKeyReadOnly("\\SYSTEM\\CurrentControlSet\\Enum\\USB\\Vid_FFFF&Pid_1305\\" +
st->operator [](i) + "\\Device Parameters"))
{
PortList->Append(reg->ReadString("PortName"));
reg->CloseKey();
}
}
}
}
__finally
{
delete reg;
}
}