09.09.2023, 07:25
|
Прохожий
|
|
Регистрация: 03.06.2021
Сообщения: 35
Версия Delphi: Delphi 7
Репутация: 10
|
|
Спасибо.Попробую
Ознакомлюсь.надеюсь получиться сделать функцию DLL
Код:
procedure EnumDevices( List:TStrings);
var
DevInfo:HDEVINFO;
InfoData:SP_DEVINFO_DATA;
I,A,Size,DType:DWORD;
Buffer,PC:PChar;
GUID:TGUID;
begin
I:=0;
while True do begin
if CM_Enumerate_Classes(I,GUID,0)=CR_NO_SUCH_VALUE then Break;
DevInfo:=SetupDiGetClassDevs(@GUID,nil,0,DIGCF_PRESENT);
if DevInfo<>HDEVINFO(INVALID_HANDLE_VALUE) then try
InfoData.cbSize:=SizeOf(InfoData);
A:=0;
Buffer:=nil;
try
while SetupDiEnumDeviceInfo(DevInfo,A,InfoData) do begin
Size:=0;
while not SetupDiGetDeviceRegistryProperty(DevInfo,InfoData,SPDRP_HARDWAREID,DType,Pointer(Buffer),Size,Size) do
if GetLastError=ERROR_INSUFFICIENT_BUFFER then
ReallocMem(Buffer,Size)
else
Exit;
PC:=Buffer;
while PC^<>#0 do begin
List.Add(PC);
PC:=StrEnd(PC)+1;
end;
Inc(A);
end;
finally
FreeMem(Buffer);
end;
finally
SetupDiDestroyDeviceInfoList(DevInfo);
end;
Inc(I);
end;
end;
в строке if CM_Enumerate_Classes(I,GUID,0)=CR_NO_SUCH_VALUE then Break; выдается ошибка undeclare identifier
|