Com порты в реестре
От: Аноним  
Дата: 21.07.01 14:14
Оценка:
В реестре находится информация об установленных в системе com портах.
HKEY_CURRENT_USER\HARDWARE\DEVICEMAP\SERIALCOMM
Как мне програмно узнать какие и сколько портов установлено , с последующим занесением значении в ComboBox ?
Буду презнателен за вашу помощь.
Re: Com порты в реестре
От: Pacer www.tis.md
Дата: 22.07.01 07:18
Оценка:
Здравствуйте Аноним, вы писали:

А>В реестре находится информация об установленных в системе 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;

CHAR Name[15];
unsigned char Data[5];
DWORD sizeName = 15,sizeData= 5;
RegQueryInfoKey(hKey,0,0,0,0,0,0,&ComCount,0,0,0,0);
if (ComCount)
{
for (i = 0, retValue = ERROR_SUCCESS;i < ComCount; i++)
{
sizeName = 15;
retValue = RegEnumValue(hKey, i,Name,
&sizeName,0,0,Data,&sizeData);
//Добовляем порты в твой ComboBox.....
m_ComNumber.AddString((char *)Data);
}
}

}
Re: Com порты в реестре
От: Yury Kharash  
Дата: 24.07.01 05:49
Оценка:
Здравствуйте Аноним, вы писали:

А>В реестре находится информация об установленных в системе com портах.

А>HKEY_CURRENT_USER\HARDWARE\DEVICEMAP\SERIALCOMM
А>Как мне програмно узнать какие и сколько портов установлено , с последующим занесением значении в ComboBox ?
А>Буду презнателен за вашу помощь.

http://www.codeproject.com/system/listports.asp
Re: Com порты в реестре
От: Аноним  
Дата: 24.08.01 09:24
Оценка:
Здравствуйте Аноним, вы писали:

А>В реестре находится информация об установленных в системе 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;
Но данная процедура не работает под НТ, под НТ приходиться считывать данные из реестра.
Re: Com порты в реестре
От: TSS Россия http://www.sdl.ru
Дата: 30.08.01 06:18
Оценка:
Здравствуйте Аноним, вы писали:

А>В реестре находится информация об установленных в системе com портах.

А>HKEY_CURRENT_USER\HARDWARE\DEVICEMAP\SERIALCOMM
А>Как мне програмно узнать какие и сколько портов установлено , с последующим занесением значении в ComboBox ?
А>Буду презнателен за вашу помощь.

Самый простой способ — это открывать CreateFile ("COM1"...), CreateFile ("COM2"...), т.к. в devicemap система держит ИМХО только "физические" устройства. Но, та же NT предоставляет так называемые "виртуальные" порты. Опрос портов (открытых через CreateFile) можно произвести через GetCommState ().

Подробности использования communications под виндами см. на MSDN
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/fileio/hh/winbase/commun_4m7n.asp?frame=true

Signed, [TSS] /SLC/
Signed, [TSS] /SDL/
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.