TRegistry * Reg;
TStringList * List;
Reg=new TRegistry;
List=new TStringList;
int i;
AnsiString w;
Reg->RootKey=HKEY_LOCAL_MACHINE;
Reg->OpenKey("HARDWARE\\DEVICEMAP\\SERIALCOMM", false);
Reg->GetValueNames(List);
for (i=0;i<List->Count;i++)
{
w=Reg->ReadString(List->Strings).SetLength(3);
if (w.SetLength(3)=="COM")
Form1->Port_Number->Items->Add(Reg->ReadString(List->Strings));
}
List->Free();
Reg->CloseKey();
Reg->Free();
Form1->Port_Number->ItemIndex=0;
delete Reg;
delete List;
Определить существующие com-порты системы
Код:
Сейчас то же самое хочу сделать в Visual Studio 2008, но никак не получается разобраться с RegOpenKeyEx, RegEnumValue... Не поможете? :)
Код переносить вряд ли будем, а что именно непонятно - поможем.
В итоге, я сделал вот так:
Код:
array<String^>^ ports = SerialPort::GetPortNames();
ComboBox^ comboBox1 = gcnew ComboBox();
this->Controls->Add(comboBox1);
comboBox1->Items->Clear();
comboBox1->Items->AddRange(ports);
ComboBox^ comboBox1 = gcnew ComboBox();
this->Controls->Add(comboBox1);
comboBox1->Items->Clear();
comboBox1->Items->AddRange(ports);
Потому что, когда писал, например:
Код:
HKEY hKey;
if (RegOpenKeyEx(HKEY_LOCAL_MACHINE,
TEXT("HARDWARE\\DEVICEMAP\\SERIALCOMM"),
0,
KEY_QUERY_VALUE,
&hKey)!=ERROR_SUCCESS)
MessageBox::Show("Ошибка", "Ошибка", MessageBoxButtons::OK, MessageBoxIcon::Exclamation);
if (RegOpenKeyEx(HKEY_LOCAL_MACHINE,
TEXT("HARDWARE\\DEVICEMAP\\SERIALCOMM"),
0,
KEY_QUERY_VALUE,
&hKey)!=ERROR_SUCCESS)
MessageBox::Show("Ошибка", "Ошибка", MessageBoxButtons::OK, MessageBoxIcon::Exclamation);
при компиляции возникали ошибки:
error LNK2028: unresolved token (0A000010) "extern "C" long __stdcall RegOpenKeyExA(struct HKEY__ *,char const *,unsigned long,unsigned long,struct HKEY__ * *)" (?RegOpenKeyExA@@$$J220YGJPAUHKEY__@@PBDKKPAPAU1@@Z) referenced in function...
error LNK2019: unresolved external symbol "extern "C" long __stdcall RegOpenKeyExA(struct HKEY__ *,char const *,unsigned long,unsigned long,struct HKEY__ * *)" (?RegOpenKeyExA@@$$J220YGJPAUHKEY__@@PBDKKPAPAU1@@Z) referenced in function...