Разное
Последние книги
Самое популярное
Все бесплатно
Все ссылки на файлы, расположенные на страницах сайта, добавлены пользователями и доступны для бесплатного скачивания. За содержание этих файлов администрация сайта ответственности не несет.
Навигация
Вопросы
Компоненты ToolBar и PageScroller
Категория: Компоненты
Категория: Компоненты
Изменить пароль для Paradox
Категория: Базы данных
Категория: Базы данных
Тpансляция ошибок в BDE
Категория: Базы данных
Категория: Базы данных
Перевод символа в верхний или нижний регистр для русского алфавита
Категория: Текст и строки
Категория: Текст и строки
Как соединить несколько файлов в один
Категория: Файловая система
Категория: Файловая система
Процедуры и функции для рабты с файлами
Категория: Файловая система
Категория: Файловая система
Вытащить значение поля в выделенных строках
Категория: Базы данных
Категория: Базы данных
Создать *.mdb-файл и таблицу в ней
Категория: Базы данных
Категория: Базы данных
Определение размера файла
Категория: Файловая система
Категория: Файловая система
Загрузка файлов в THTMLViewer и TFrameBrowser
Категория: Интернет и Сети
Категория: Интернет и Сети
Delphi - База Знаний: Как получить список устройств, подключённых к компьютеру
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;
type
TForm1 = class(TForm)
Memo1: TMemo;
Button1: TButton;
Button2: TButton;
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
const
DIGCF_ALLCLASSES=$00000004;
DIGCF_PRESENT=$00000002;
DIGCF_PROFILE=$00000008;
DIGCF_DEVICEINTERFACE=$00000010;
SPDRP_DEVICEDESC=$00000000;
type
SP_DEVINFO_DATA=record
cbSize:DWord;
ClassGuid:TGuid;
DevInst:DWord; // DEVINST handle
Reserved:LongInt;
end;
PSP_DEVINFO_DATA=^SP_DEVINFO_DATA;
PGuid=^TGuid;
function SetupDiCreateDeviceInfoList(ClassGuid:PGuid;
hwndParent:cardinal):Pointer; stdcall; external 'setupapi.dll';
function SetupDiGetClassDevsExA(ClassGuid:PGuid; Enumerator:PChar;
hwndParent:cardinal; Flags:DWord; DeviceInfoSet:Pointer;
MachineName:PChar; Reserved:DWord):Pointer; stdcall; external 'setupapi.dll';
function SetupDiGetDeviceRegistryPropertyA(DeviceInfoSet:Pointer;
DeviceInfoData:PSP_DEVINFO_DATA; Property_:DWord; PropertyRegDataType:Pointer;
PropertyBuffer:Pointer; PropertyBufferSize:cardinal; RequiredSize:Pointer):longbool;
stdcall; external 'setupapi.dll';
function SetupDiEnumDeviceInfo(DeviceInfoSet:Pointer; MemberIndex:DWord;
var DeviceInfoData:SP_DEVINFO_DATA):longbool; stdcall; external 'setupapi.dll';
function SetupDiDestroyDeviceInfoList(DeviceInfoSet:Pointer):longbool; stdcall;
external 'setupapi.dll';
procedure TForm1.Button1Click(Sender: TObject);
var
dwRequired:cardinal;
hDev, hAllDevices:Pointer;
dwInfo:DWord;
Data:SP_DEVINFO_DATA;
buf:PChar;
s:string;
begin
hDev:=SetupDiCreateDeviceInfoList(nil, 0);
If cardinal(hDev)=INVALID_HANDLE_VALUE then
begin
ShowMessage('Error in SetupDiCreateDeviceInfoList');
exit;
end;
hAllDevices:=SetupDiGetClassDevsExA(nil, nil, 0, {DIGCF_PRESENT or} DIGCF_ALLCLASSES,
hDev, nil, 0);
If cardinal(hAllDevices)=INVALID_HANDLE_VALUE then
begin
ShowMessage('Error in SetupDiGetClassDevsExA');
exit;
end;
FillChar(Data, SizeOf(SP_DEVINFO_DATA), 0);
Data.cbSize:=SizeOf(SP_DEVINFO_DATA);
dwInfo:=0;
If not SetupDiEnumDeviceInfo(hAllDevices, dwInfo, Data) then
begin
ShowMessage('Error in SetupDiEnumDeviceInfo');
exit;
end;
buf:=StrAlloc(100);
While SetupDiEnumDeviceInfo(hAllDevices, dwInfo, Data) do
begin
dwRequired:=0;
FillChar(buf^, 100, #0);
If SetupDiGetDeviceRegistryPropertyA(hAllDevices, @Data, SPDRP_DEVICEDESC,
nil, @buf^, 100, @dwRequired) then
begin
s:=string(buf);
Memo1.Lines.Add(s);
end;
inc(dwInfo);
end;
StrDispose(buf);
SetupDiDestroyDeviceInfoList(hAllDevices);
SetupDiDestroyDeviceInfoList(hDev);
end;
end.