Registriert seit: 26. Nov 2004
Ort: 37345
214 Beiträge
Delphi 7 Professional
|
Re: COM Ports im System auslesen
12. Aug 2008, 10:43
Hab letztens noch diese Funktion gefunden, macht auch was sie soll ( Link zum Orginalposting):
Delphi-Quellcode:
procedure EnumComPorts(Ports: TStrings);
var
KeyHandle: HKEY;
ErrCode, Index: Integer;
ValueName, Data: string;
ValueLen, DataLen, ValueType: DWORD;
TmpPorts: TStringList;
begin
ErrCode := RegOpenKeyEx(HKEY_LOCAL_MACHINE, ' HARDWARE\DEVICEMAP\SERIALCOMM',
0, KEY_READ, KeyHandle);
if ErrCode <> ERROR_SUCCESS then
raise Exception.Create(' Fehler beim Registry öffnen!');
TmpPorts := TStringList.Create;
try
Index := 0;
repeat
ValueLen := 256;
DataLen := 256;
SetLength(ValueName, ValueLen);
SetLength(Data, DataLen);
ErrCode := RegEnumValue(
KeyHandle,
Index,
PChar(ValueName),
Cardinal(ValueLen),
nil,
@ValueType,
PByte(PChar(Data)),
@DataLen);
if ErrCode = ERROR_SUCCESS then
begin
SetLength(Data, DataLen - 1);
TmpPorts.Add(Data);
Inc( Index);
end
else
if ErrCode <> ERROR_NO_MORE_ITEMS then
raise Exception.Create(' Fehler Registry auslesen!');
until (ErrCode <> ERROR_SUCCESS) ;
TmpPorts.Sort;
Ports.Assign(TmpPorts);
finally
RegCloseKey(KeyHandle);
TmpPorts.Free;
end;
end;
Die Funktion GetRegistryPropertyString hab ich nur in der TJvHidPnPInfo Klasse der Unit JvHidControllerClass gefunden. Sollte aber stimmen.
Delphi-Quellcode:
function GetRegistryPropertyString(PnPHandle: HDEVINFO;
const DevData: TSPDevInfoData; Prop: DWORD): string;
var
BytesReturned: DWORD;
RegDataType: DWORD;
Buffer: array [0..1023] of Char;
begin
BytesReturned := 0;
RegDataType := 0;
Buffer[0] := #0;
SetupDiGetDeviceRegistryPropertyA(PnPHandle, DevData, Prop,
RegDataType, PByte(@Buffer[0]), SizeOf(Buffer), BytesReturned);
Result := Buffer;
end;
Gruß,
Matthias
Matthias
|
|
Zitat
|