Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > [ "Начинающим" ]
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 12.07.2014, 14:33
Аватар для Belanserg
Belanserg Belanserg вне форума
Прохожий
 
Регистрация: 18.11.2009
Сообщения: 29
Версия Delphi: 7
Репутация: 12
По умолчанию Свойство диска

Как открыть окно свойства диска (например диска C:\) из delphi7?
Ответить с цитированием
  #2  
Старый 13.07.2014, 01:52
Аватар для Alegun
Alegun Alegun вне форума
LMD-DML
 
Регистрация: 12.07.2009
Адрес: Богородское
Сообщения: 3,025
Версия Delphi: D7E
Репутация: 1834
По умолчанию

Проверено под W7 на D7
Код:
uses 
 ShellAPI;
procedure ShowDiskProperties( Path: string );
var
 SEInfo: SHELLEXECUTEINFO;
begin
 FillChar( SEInfo, SizeOf( SEInfo ), 0 );
 SEInfo.cbSize := SizeOf( SHELLEXECUTEINFO );
 with SEInfo do
  begin
   fMask := SEE_MASK_NOCLOSEPROCESS or SEE_MASK_INVOKEIDLIST or SEE_MASK_FLAG_NO_UI;
   Wnd := Application.Handle;
   lpFile := PChar( Path );
   lpVerb := 'Properties';
   lpParameters := '';
   hInstApp := 0;
   lpIDList := nil;
   lpDirectory := PChar( Path );
   nShow := SW_SHOWNORMAL;
   end;
 ShellExecuteEx( @SEInfo );
end;
Пример вызова
Код:
...
ShowDiskProperties( 'c:' );
...
Ответить с цитированием
Этот пользователь сказал Спасибо Alegun за это полезное сообщение:
Belanserg (13.07.2014)
  #3  
Старый 13.07.2014, 04:53
MotoArhangel MotoArhangel вне форума
Новичок
 
Регистрация: 14.10.2012
Сообщения: 58
Версия Delphi: Delphi 10.4
Репутация: 10
По умолчанию

Код:
{>> Получение сведений о диске (метка/имя диска, файловая система, серийный номер)  
   
Получение информации о любом диске.  
Работает на FDD, HDD, CD, другие не пробовал.  
   
Создайте модуль с именем HDDInfo и полностью скопируйте в него весь текст.  
   
Copyright: Собственное написание (Осипов Евгений Анатольевич)   
***************************************************** }  
    
unit HDDInfo;   
    
interface  
    
Uses Windows;   
    
Const {Константы для TypeOfDisk функции GetDisks}  
DiskUnknown=0; {Неизвестные диски}  
DiskNone=1; {Отсутствующие диски}  
DiskFDD=DRIVE_REMOVABLE; {Съёмные диски, дискеты}  
DiskHDD=DRIVE_FIXED; {Не съёиные диски, жёсткие диски}  
DiskNet=DRIVE_REMOTE; {Сетевые диски}  
DiskCDROM=DRIVE_CDROM; {CD ROM}  
DiskRAM=DRIVE_RAMDISK; {Диски в ОЗУ}  
    
{Получить имена нужных дисков}  
function GetDisks(TypeOfDisk : Word) : String;   
    
{Функция получения информации о диске (HDD,FDD,CD) с буквой Disk}  
{  
Передаваемые значения:  
Disk - Буква диска  
   
Получаемые значения:  
VolumeName - Метка/Имя тома  
FileSystemName - Файловая система  
VolumeSerialNo - Серийный номер диска (можно привязывать к диску программы)  
MaxComponentLength - Максимальная длинна имени файла  
FileSystemFlags - Флаги смотрите в справке Delphi по GetVolumeInformation  
   
Функция возвращает true, если всё прошло успешно (диск нашёлся),  
и false, если возникли проблемы, например диска нет в дисководе,  
либо дисковода такого вообще нет  
}  
Function GetHDDInfo(Disk : Char;Var VolumeName, FileSystemName : String;   
Var VolumeSerialNo, MaxComponentLength, FileSystemFlags:LongWord) : Boolean;   
    
implementation  
    
function GetDisks(TypeOfDisk : Word) : String;{Получить имена нужных дисков}  
var  
  DriveArray : array[1..26] of Char;   
  I : integer;   
begin  
DriveArray:='ABCDEFGHIJKLMNOPQRSTUVWXYZ';   
for I := 1 to 26 do  
  if GetDriveType(PChar(DriveArray[i]+':\')) = TypeOfDisk then    
    Result := Result+DriveArray[i];   
end;   
    
Function GetHDDInfo(Disk : Char;Var VolumeName, FileSystemName : String;   
  Var VolumeSerialNo, MaxComponentLength, FileSystemFlags:LongWord) : Boolean;   
  Var   
_VolumeName,_FileSystemName:array [0..MAX_PATH-1] of Char;   
_VolumeSerialNo,_MaxComponentLength,_FileSystemFlags:LongWord;   
Begin   
if GetVolumeInformation(PChar(Disk+':\'),_VolumeName,MAX_PATH,@_VolumeSerialNo,   
   _MaxComponentLength,_FileSystemFlags,_FileSystemName,MAX_PATH) then  
Begin   
VolumeName:=_VolumeName;   
VolumeSerialNo:=_VolumeSerialNo;   
MaxComponentLength:=_MaxComponentLength;   
FileSystemFlags:=_FileSystemFlags;   
FileSystemName:=_FileSystemName;   
Result:=True;   
End    
else    
  Result:=False;   
End;   
end. 

Применение:
Код:
USES ..., ..., ..., HDDInfo; {Добавляем наш модуль}  
    
{Нужно создать на форме компонент TLabel , Name которого ставим в Disks}  
{И в событии главной формы OnActicate написать это:}  
    
procedure TMyForm.FormActivate(Sender: TObject);   
Var   
S,SOut : String;   
I : Integer;   
VolumeName,FileSystemName : String;   
VolumeSerialNo,MaxComponentLength,FileSystemFlags:LongWord;   
begin  
S:=GetDisks(DiskHDD); {Получаем список Жёстких дисков (Параметр DiskHDD)}  
SOut:='';   
For I:=1 to Length(S) do {Получаем информацию о всех дисках и пишем в TLabel на форме}  
Begin   
{Если диск существует/вставлен ...}  
if GetHDDInfo(S[i], VolumeName, FileSystemName, VolumeSerialNo,   
MaxComponentLength, FileSystemFlags) then {... тогда собираем информацию}  
SOut:=SOut+   
'Диск: '+S[i]+#13#10+   
'Метка: '+VolumeName+#13#10+   
'Файловая система: '+FileSystemName+#13+#10+   
'Серийный номер: '+IntToHex(VolumeSerialNo,8)+#13+#10+   
'Макс. длина имени файла: '+IntToStr(MaxComponentLength)+#13+#10+   
'Flags: '+IntToHex(FileSystemFlags,4)+#13#10+#13#10;   
End;   
Disks.Caption:=SOut; {Выводим в компонент TLabel полученные данные о дисках}  
end;  
Источник:DRKB
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 16:43.


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2023

ВКонтакте   Facebook   Twitter