В реестре находится информация об установленных в системе com портах.
HKEY_CURRENT_USER\HARDWARE\DEVICEMAP\SERIALCOMM
Как мне програмно узнать какие и сколько портов установлено , с последующим занесением значении в ComboBox ?
Буду презнателен за вашу помощь.
Здравствуйте Аноним, вы писали:
А>В реестре находится информация об установленных в системе com портах. А>HKEY_CURRENT_USER\HARDWARE\DEVICEMAP\SERIALCOMM А>Как мне програмно узнать какие и сколько портов установлено , с последующим занесением значении в ComboBox ? А>Буду презнателен за вашу помощь.
Нет ни чего проще.
только не HKEY_CURRENT_USER а HKEY_LOCAL_MACHINE
//-----------------------------при инициализации
HKEY hKey;
DWORD result;
result=RegOpenKey(HKEY_LOCAL_MACHINE,"HARDWARE\\DEVICEMAP\\SERIALCOMM",&hKey);
if(result==ERROR_SUCCESS)
{
FillComboBox(hKey);
}
RegCloseKey(hKey);
/////////////////////////////////////////
FillComboBox(HKEY hKey)
{
DWORD ComCount; // колличество значений в ключе
DWORD i,retValue;
Здравствуйте Аноним, вы писали:
А>В реестре находится информация об установленных в системе com портах. А>HKEY_CURRENT_USER\HARDWARE\DEVICEMAP\SERIALCOMM А>Как мне програмно узнать какие и сколько портов установлено , с последующим занесением значении в ComboBox ? А>Буду презнателен за вашу помощь.
Здравствуйте Аноним, вы писали:
А>В реестре находится информация об установленных в системе com портах. А>HKEY_CURRENT_USER\HARDWARE\DEVICEMAP\SERIALCOMM А>Как мне програмно узнать какие и сколько портов установлено , с последующим занесением значении в ComboBox ? А>Буду презнателен за вашу помощь.
В доках написано, что эту инфу система обновляет при каждом перезапуске. Но это не совсем так — если портов на самом деле нет, а записи присутсвуют, то они не удаляються. Поэтому возможна ситуация, когда в реестре записей больше, чем на самом деле портов в системе. Я пользуюсь биосовскими данными о кол-ве портов, с помощью нехитрой функции
function HowManyCommPorts:byte;
var
i:byte;
Begin
asm
int 11h;
shr AH, 1;
and AH, $7;
mov Result,AH;
end; {asm}
End;
Но данная процедура не работает под НТ, под НТ приходиться считывать данные из реестра.
Здравствуйте Аноним, вы писали:
А>В реестре находится информация об установленных в системе com портах. А>HKEY_CURRENT_USER\HARDWARE\DEVICEMAP\SERIALCOMM А>Как мне програмно узнать какие и сколько портов установлено , с последующим занесением значении в ComboBox ? А>Буду презнателен за вашу помощь.
Самый простой способ — это открывать CreateFile ("COM1"...), CreateFile ("COM2"...), т.к. в devicemap система держит ИМХО только "физические" устройства. Но, та же NT предоставляет так называемые "виртуальные" порты. Опрос портов (открытых через CreateFile) можно произвести через GetCommState ().