1 (edited by Без_имени 2023-08-16 07:11:01)

Topic: Работа с внешними носителями

Здравствуйте, подскажите мне, возможно как нибудь определить через программу подключенные внешние накопители, узнать их объем, имя, файловую систему и список файлов.
Покажите на примере.
Заранее благодарен.

Re: Работа с внешними носителями

Кто нибудь может помочь ?!

Re: Работа с внешними носителями

wmic в помощь:


wmic diskdrive list
wmic logicaldisk get description,name


Алгоритм такой: вызываете консольную команду с выводом результата в файл, затем парсите файл результата.

Визуальное программирование: блог и телеграм-канал.

Re: Работа с внешними носителями

k245 wrote:

wmic в помощь:

wmic diskdrive list
wmic logicaldisk get description,name

Алгоритм такой: вызываете консольную команду с выводом результата в файл, затем парсите файл результата.

По средством delphi это нельзя реализовать, не полностью а частично.

Re: Работа с внешними носителями

Средствами MVDB:

1. создаете текстовый файл  (  wmic diskdrive list > result.txt ) с расширением .cmd и сохраняете его (например, через TStringList.SaveToFile( 'getdata.cmd' )  )
2. вызываете его на выполнение ( OpenFile( 'getdata.cmd' ) )
3. открываете текстовый файл результата ( TStringList.LoadFromFile ('result.txt') )

Визуальное программирование: блог и телеграм-канал.

6 (edited by vovka3003 2023-08-17 09:41:19)

Re: Работа с внешними носителями

OLE-шкой через WMI можно же...

Re: Работа с внешними носителями

vovka3003 wrote:

OLE-шкой через WMI можно же...

Это оно?

https://assets.zabbix.com/img/brands/wmi.png

https://learn.microsoft.com/ru-ru/windo … pi-for-wmi

Визуальное программирование: блог и телеграм-канал.

Re: Работа с внешними носителями

k245 wrote:

Это оно?

Угу.

Re: Работа с внешними носителями

https://legatomusic.ru/nas/h500/img/cdimg2/00/56/55/01.jpg

Визуальное программирование: блог и телеграм-канал.

Re: Работа с внешними носителями

Мы - мясо! Мы - газ!

11 (edited by vovka3003 2023-08-17 17:32:06)

Re: Работа с внешними носителями

Порыл старые черновики...

// 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. 

https://i.imgur.com/y0IcXKR.png

Re: Работа с внешними носителями

vovka3003 wrote:

Порыл старые черновики...

// 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. 

https://i.imgur.com/y0IcXKR.png


Спасибо большое
Попробую Ваш пример

13 (edited by m128mx 2023-08-18 07:52:34)

Re: Работа с внешними носителями

vovka3003 wrote:

Порыл старые черновики...

vovka3003, а с юсб носителями сработает? Наверное только если он как том с буквой определится?

Re: Работа с внешними носителями

m128mx wrote:

vovka3003, а с юсб носителями сработает? Наверное только если он как том с буквой определится?

Не совсем понял что значит "работает" и "если он как том с буквой определится"...
WMI может перечислить все устройства в системе (диски, порты, видео- аудио- устройства, сетевые адаптеры и т.п.)