Bạn có thể sử dụng lớp WMIWin32_DiskDrive. nếu bạn cần nhận được thông tin về các ổ đĩa logic bạn có thể truy vấn WMI với một cái gì đó như thế này
Select * Win32_LogicalDisk where DriveType = 2
để truy cập WMI từ delphi bạn phải nhập Microsoft WMIScripting v1.x Thư viện sử dụng Component-> Nhập Component-> Nhập type library-> Next -> "Chọn thư viện" -> Next-> Thêm đơn vị vào project-> Finish.
nếu bạn cần thêm thông tin về các thiết bị usb bạn có thể kiểm tra cũng là lớp tiếp theo
Xem ví dụ này (thử nghiệm trong Delphi 2007 và Windows 7)
program GetWMI_USBConnectedInfo;
{$APPTYPE CONSOLE}
uses
Classes,
ActiveX,
Variants,
SysUtils,
WbemScripting_TLB in '..\..\..\Documents\RAD Studio\5.0\Imports\WbemScripting_TLB.pas';
procedure GetUSBDiskDriveInfo;
var
WMIServices : ISWbemServices;
Root : ISWbemObjectSet;
Item : Variant;
i : Integer;
StrDeviceUSBName: String;
begin
WMIServices := CoSWbemLocator.Create.ConnectServer('.', 'root\cimv2','', '', '', '', 0, nil);
Root := WMIServices.ExecQuery('Select * From Win32_DiskDrive Where InterfaceType="USB"','WQL', 0, nil);//more info in http://msdn.microsoft.com/en-us/library/aa394132%28VS.85%29.aspx
for i := 0 to Root.Count - 1 do
begin
Item := Root.ItemIndex(i);
Writeln('Caption '+VarToStr(Item.Caption));
Writeln('DeviceID '+VarToStr(Item.DeviceID));
Writeln('FirmwareRevision '+VarToStr(Item.FirmwareRevision));
Writeln('Manufacturer '+VarToStr(Item.Manufacturer));
Writeln('Model '+VarToStr(Item.Model));
Writeln('PNPDeviceID '+VarToStr(Item.PNPDeviceID));
Writeln('Status '+VarToStr(Item.Status));
End;
end;
begin
try
CoInitialize(nil);
GetUSBDiskDriveInfo;
Readln;
CoUninitialize;
except
on E:Exception do
Begin
CoUninitialize;
Writeln(E.Classname, ': ', E.Message);
Readln;
End;
end;
end.
Bạn có thể muốn chấp nhận câu trả lời! –