![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
EnumPorts странно работает [D7, WinXP]
Корешь © (2006-05-31 22:22:00)Использую для получения списка портов следующий код
var
BytesNeeded, Returned, I: DWORD;
Success: Boolean;
PortsRtr: Pointer;
InfoPtr: PPortInfo1;
TempStr: string;
begin
Success:=EnumPorts(nil, 1, nil, 0, BytesNeeded, Returned);
If (not Success) and (GetLastError = ERROR_INSUFFICIENT_BUFFER) then
begin
GetMem(PortsRtr, BytesNeeded);
Try
Win32Check(EnumPorts(nil, 1, PortsRtr, BytesNeeded, BytesNeeded, Returned));
For I:=0 to Returned -1 do
begin
InfoPtr:= PPortInfo1(DWORD(PortsRtr)+ I * SizeOf(TPortInfo1));
TempStr:= InfoPtr^.pName;
ComboBox1.Items.Add(TempStr);
end;
Finally
FreeMem(PortsRtr);
end;
end;
Так вот получается что у меня в системе четыре com и три lpt портов, хотя их два и один соответсвенно, как получит правильную информацию о наличии портов?
Kolan (2006-05-31 23:29:00) [1]
> tesseract © (31.05.06 23:15) [6]
Угу...
tesseract (2006-05-31 23:15:00) [2]Kolan см внимательнрее код который я тебе выслал :-).
Там не Tstrings, а TStringList, лучше использовать Assign, а не цикл, остальное верно :-)
Kolan (2006-05-31 22:40:00) [3]Ну все что знал расказал... (c)
Корешь (2006-05-31 22:36:00) [4]не то же не катит...
wmi выдает правильные результаты, но не очень хочется его использовать...
Kolan (2006-05-31 22:32:00) [5]
Как узнать имена установленных в системе COM-портов?
Previous Top Next
uses Registry;
procedure TForm1.Button1Click(Sender: TObject);
var
reg : TRegistry;
ts : TStrings;
i : integer;
begin
reg := TRegistry.Create;
reg.RootKey := HKEY_LOCAL_MACHINE;
reg.OpenKey('hardware\devicemap\serialcomm',
false);
ts := TStringList.Create;
reg.GetValueNames(ts);
for i := 0 to ts.Count -1 do begin
Memo1.Lines.Add(reg.ReadString(ts.Strings[i]));
end;
ts.Free;
reg.CloseKey;
reg.free;
end;
Взято с Исходников.ru http://www.sources.ru
Корешь (2006-05-31 22:29:00) [6]оно конечно можно, но если в это время порт занят кемто то получится что его нет....
Kolan (2006-05-31 22:24:00) [7]
> как получит правильную информацию о наличии портов?
>
Я думаю просто попытать ся их открыть... Удачно - он есть нет, значит нет...