Topic: Работа с внешними носителями
Здравствуйте, подскажите мне, возможно как нибудь определить через программу подключенные внешние накопители, узнать их объем, имя, файловую систему и список файлов.
Покажите на примере.
Заранее благодарен.
My Visual Database → Russian → Работа с внешними носителями
Здравствуйте, подскажите мне, возможно как нибудь определить через программу подключенные внешние накопители, узнать их объем, имя, файловую систему и список файлов.
Покажите на примере.
Заранее благодарен.
Кто нибудь может помочь ?!
wmic в помощь:
wmic diskdrive list
wmic logicaldisk get description,name
Алгоритм такой: вызываете консольную команду с выводом результата в файл, затем парсите файл результата.
wmic в помощь:
wmic diskdrive list
wmic logicaldisk get description,name
Алгоритм такой: вызываете консольную команду с выводом результата в файл, затем парсите файл результата.
По средством delphi это нельзя реализовать, не полностью а частично.
Средствами MVDB:
1. создаете текстовый файл ( wmic diskdrive list > result.txt ) с расширением .cmd и сохраняете его (например, через TStringList.SaveToFile( 'getdata.cmd' ) )
2. вызываете его на выполнение ( OpenFile( 'getdata.cmd' ) )
3. открываете текстовый файл результата ( TStringList.LoadFromFile ('result.txt') )
OLE-шкой через WMI можно же...
OLE-шкой через WMI можно же...
Это оно?
https://learn.microsoft.com/ru-ru/windo … pi-for-wmi
Мы - мясо! Мы - газ!
Порыл старые черновики...
// Win32_LogicalDisk class:
// https://learn.microsoft.com/en-US/windows/win32/cimwin32prov/win32-logicaldisk#properties
procedure GetDisks;
var
FSWbemLocator, disks, disk: Variant;
i:integer;
res:string;
begin
try
FSWbemLocator := CreateOleObject('WbemScripting.SWbemLocator');
disks := FSWbemLocator.ConnectServer('.', 'root\CIMV2', '', '')
.ExecQuery('SELECT * FROM Win32_LogicalDisk');
for i:=0 to disks.Count-1 do
begin
disk := disks.ItemIndex[i];
res := res +
//'Access: ' + VarToStr(disk.Access) + #13#10 +
//'Availability: ' + VarToStr(disk.Availability) + #13#10 +
//'BlockSize: ' + VarToStr(disk.BlockSize) + #13#10 +
'Caption: ' + VarToStr(disk.Caption) + #13#10 +
'Compressed: ' + VarToStr(disk.Compressed) + #13#10 +
//'ConfigManagerErrorCode: ' + VarToStr(disk.ConfigManagerErrorCode) + #13#10 +
//'ConfigManagerUserConfig: ' + VarToStr(disk.ConfigManagerUserConfig) + #13#10 +
//'CreationClassName: ' + VarToStr(disk.CreationClassName) + #13#10 +
'Description: ' + VarToStr(disk.Description) + #13#10 +
'DeviceID: ' + VarToStr(disk.DeviceID) + #13#10 +
'DriveType: ' + VarToStr(disk.DriveType) + #13#10 +
//'ErrorCleared: ' + VarToStr(disk.ErrorCleared) + #13#10 +
//'ErrorDescription: ' + VarToStr(disk.ErrorDescription) + #13#10 +
//'ErrorMethodology: ' + VarToStr(disk.ErrorMethodology) + #13#10 +
'FileSystem: ' + VarToStr(disk.FileSystem) + #13#10 +
'FreeSpace: ' + VarToStr(disk.FreeSpace) + #13#10 +
//'InstallDate: ' + VarToStr(disk.InstallDate) + #13#10 +
//'LastErrorCode: ' + VarToStr(disk.LastErrorCode) + #13#10 +
//'MaximumComponentLength: ' + VarToStr(disk.MaximumComponentLength) + #13#10 +
'MediaType: ' + VarToStr(disk.MediaType) + #13#10 +
'Name: ' + VarToStr(disk.Name) + #13#10 +
//'NumberOfBlocks: ' + VarToStr(disk.NumberOfBlocks) + #13#10 +
//'PNPDeviceID: ' + VarToStr(disk.PNPDeviceID) + #13#10 +
//'PowerManagementCapabilities[]: ' + VarToStr(disk.PowerManagementCapabilities[]) + #13#10 +
//'PowerManagementSupported: ' + VarToStr(disk.PowerManagementSupported) + #13#10 +
//'ProviderName: ' + VarToStr(disk.ProviderName) + #13#10 +
//'Purpose: ' + VarToStr(disk.Purpose) + #13#10 +
'QuotasDisabled: ' + VarToStr(disk.QuotasDisabled) + #13#10 +
//'QuotasIncomplete: ' + VarToStr(disk.QuotasIncomplete) + #13#10 +
//'QuotasRebuilding: ' + VarToStr(disk.QuotasRebuilding) + #13#10 +
'Size: ' + VarToStr(disk.Size) + #13#10 +
//'Status: ' + VarToStr(disk.Status) + #13#10 +
//'StatusInfo: ' + VarToStr(disk.StatusInfo) + #13#10 +
'SupportsDiskQuotas: ' + VarToStr(disk.SupportsDiskQuotas) + #13#10 +
'SupportsFileBasedCompression: ' + VarToStr(disk.SupportsFileBasedCompression) + #13#10 +
//'SystemCreationClassName: ' + VarToStr(disk.SystemCreationClassName) + #13#10 +
'SystemName: ' + VarToStr(disk.SystemName) + #13#10 +
//'VolumeDirty: ' + VarToStr(disk.VolumeDirty) + #13#10 +
//'VolumeName: ' + VarToStr(disk.VolumeName) + #13#10 +
'VolumeSerialNumber: ' + VarToStr(disk.VolumeSerialNumber) + #13#10 + #13#10 ;
end;
ShowMessage(trim(res));
finally
FSWbemLocator := 0;
end;
end;
begin
GetDisks;
end.
Порыл старые черновики...
// Win32_LogicalDisk class: // https://learn.microsoft.com/en-US/windows/win32/cimwin32prov/win32-logicaldisk#properties procedure GetDisks; var FSWbemLocator, disks, disk: Variant; i:integer; res:string; begin try FSWbemLocator := CreateOleObject('WbemScripting.SWbemLocator'); disks := FSWbemLocator.ConnectServer('.', 'root\CIMV2', '', '') .ExecQuery('SELECT * FROM Win32_LogicalDisk'); for i:=0 to disks.Count-1 do begin disk := disks.ItemIndex[i]; res := res + //'Access: ' + VarToStr(disk.Access) + #13#10 + //'Availability: ' + VarToStr(disk.Availability) + #13#10 + //'BlockSize: ' + VarToStr(disk.BlockSize) + #13#10 + 'Caption: ' + VarToStr(disk.Caption) + #13#10 + 'Compressed: ' + VarToStr(disk.Compressed) + #13#10 + //'ConfigManagerErrorCode: ' + VarToStr(disk.ConfigManagerErrorCode) + #13#10 + //'ConfigManagerUserConfig: ' + VarToStr(disk.ConfigManagerUserConfig) + #13#10 + //'CreationClassName: ' + VarToStr(disk.CreationClassName) + #13#10 + 'Description: ' + VarToStr(disk.Description) + #13#10 + 'DeviceID: ' + VarToStr(disk.DeviceID) + #13#10 + 'DriveType: ' + VarToStr(disk.DriveType) + #13#10 + //'ErrorCleared: ' + VarToStr(disk.ErrorCleared) + #13#10 + //'ErrorDescription: ' + VarToStr(disk.ErrorDescription) + #13#10 + //'ErrorMethodology: ' + VarToStr(disk.ErrorMethodology) + #13#10 + 'FileSystem: ' + VarToStr(disk.FileSystem) + #13#10 + 'FreeSpace: ' + VarToStr(disk.FreeSpace) + #13#10 + //'InstallDate: ' + VarToStr(disk.InstallDate) + #13#10 + //'LastErrorCode: ' + VarToStr(disk.LastErrorCode) + #13#10 + //'MaximumComponentLength: ' + VarToStr(disk.MaximumComponentLength) + #13#10 + 'MediaType: ' + VarToStr(disk.MediaType) + #13#10 + 'Name: ' + VarToStr(disk.Name) + #13#10 + //'NumberOfBlocks: ' + VarToStr(disk.NumberOfBlocks) + #13#10 + //'PNPDeviceID: ' + VarToStr(disk.PNPDeviceID) + #13#10 + //'PowerManagementCapabilities[]: ' + VarToStr(disk.PowerManagementCapabilities[]) + #13#10 + //'PowerManagementSupported: ' + VarToStr(disk.PowerManagementSupported) + #13#10 + //'ProviderName: ' + VarToStr(disk.ProviderName) + #13#10 + //'Purpose: ' + VarToStr(disk.Purpose) + #13#10 + 'QuotasDisabled: ' + VarToStr(disk.QuotasDisabled) + #13#10 + //'QuotasIncomplete: ' + VarToStr(disk.QuotasIncomplete) + #13#10 + //'QuotasRebuilding: ' + VarToStr(disk.QuotasRebuilding) + #13#10 + 'Size: ' + VarToStr(disk.Size) + #13#10 + //'Status: ' + VarToStr(disk.Status) + #13#10 + //'StatusInfo: ' + VarToStr(disk.StatusInfo) + #13#10 + 'SupportsDiskQuotas: ' + VarToStr(disk.SupportsDiskQuotas) + #13#10 + 'SupportsFileBasedCompression: ' + VarToStr(disk.SupportsFileBasedCompression) + #13#10 + //'SystemCreationClassName: ' + VarToStr(disk.SystemCreationClassName) + #13#10 + 'SystemName: ' + VarToStr(disk.SystemName) + #13#10 + //'VolumeDirty: ' + VarToStr(disk.VolumeDirty) + #13#10 + //'VolumeName: ' + VarToStr(disk.VolumeName) + #13#10 + 'VolumeSerialNumber: ' + VarToStr(disk.VolumeSerialNumber) + #13#10 + #13#10 ; end; ShowMessage(trim(res)); finally FSWbemLocator := 0; end; end; begin GetDisks; end.
Спасибо большое
Попробую Ваш пример
Порыл старые черновики...
vovka3003, а с юсб носителями сработает? Наверное только если он как том с буквой определится?
vovka3003, а с юсб носителями сработает? Наверное только если он как том с буквой определится?
Не совсем понял что значит "работает" и "если он как том с буквой определится"...
WMI может перечислить все устройства в системе (диски, порты, видео- аудио- устройства, сетевые адаптеры и т.п.)
My Visual Database → Russian → Работа с внешними носителями
Powered by PunBB, supported by Informer Technologies, Inc.
Theme Hydrogen by Kushi