ANTICHAT — форум по информационной безопасности, OSINT и технологиям
ANTICHAT — русскоязычное сообщество по безопасности, OSINT и программированию.
Форум ранее работал на доменах antichat.ru, antichat.com и antichat.club,
и теперь снова доступен на новом адресе —
forum.antichat.xyz.
Форум восстановлен и продолжает развитие: доступны архивные темы, добавляются новые обсуждения и материалы.
⚠️ Старые аккаунты восстановить невозможно — необходимо зарегистрироваться заново.

02.03.2009, 12:49
|
|
Участник форума
Регистрация: 15.11.2006
Сообщений: 259
Провел на форуме: 2589211
Репутация:
151
|
|
Сообщение от Nightmarе
Как получить список дисков в системе + полную инфу про них, файловая система, тип диска(жесткий, флешка, дисковод, сидиром) размер, метка и т.д....
?
Кинь пару кнопок и listbox
Код:
procedure TForm1.Button1Click(Sender: TObject);
var
D:dword;
i,n:integer;
begin
D:=GetLogicalDrives;
i:= 1; n:= Ord('A');
while i > 0 do begin
if (D and i) <> 0 then
ListBox1.Items.Add(Chr(n));
Inc(n);
i:= i SHL 1;
End;
end;
Так мы в listbox выведем все диски, которые у нас есть
Код:
procedure TForm1.Button2Click(Sender: TObject);
var
i:integer;
Disk: PAnsiChar;
SerialNum: dword;
VName, FSName: array [0..255] of char;
MaxNameL,FSFlags:dword;
begin
for i:=1 to listbox1.Items.Count-1 do begin
Disk:=PChar(listbox1.Items[i]);
if GetVolumeInformation(PChar(Disk + ':\'),
VName, SizeOf(VName),
@SerialNum, MaxNameL, FSFlags, FSName, SizeOf(FSName)) then
Showmessage('Диск:'+Disk+#13+'Файловая система: '+FSName +#13+ 'Имя тома: ' + VName + #13+ 'Максимальная длина имени файла: '+IntToStr(MaxNameL)+#13+ 'Флаги фс: '+IntToStr(FSFlags));
end;
end;
Терь пробежимся по всем дискам, показывая их свойства мессагой.
Для определения типа юзаем GetDriveType
К примеру
Код:
{функция определения типа устройства}
function GetD(Drive: String): String;
var
DType : uInt;
begin
DType := GetDriveType(PChar(Drive));
case DType of
0: Result := Неизвестный';
1: Result := 'Неверный корневой путь';
Drive_Removable: Result := 'Съемный';
Drive_Fixed: Result := 'Постоянный';
Drive_Remote: Result := 'Внешний';
Drive_CDROM: Result := 'Привод CD';
Drive_RamDisk: Result := 'Диск RAM'
else Result := 'хз :)';
end;
end;
{использование функции}
...
Showmessage(GetD('A:\'));
...
Не забудь ставить :\ (:/) или : после буквы диска, синтаксис требует указывать путь к корню данного диска
Последний раз редактировалось FindeR; 02.03.2009 в 13:03..
|
|
|
|
|
Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
|
|
|
|