Форум по 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
Код:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
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;
Пример вызова
Код:
1
2
3
...
ShowDiskProperties( 'c:' );
...
Ответить с цитированием
Этот пользователь сказал Спасибо Alegun за это полезное сообщение:
Belanserg (13.07.2014)
  #3  
Старый 13.07.2014, 04:53
MotoArhangel MotoArhangel вне форума
Новичок
 
Регистрация: 14.10.2012
Сообщения: 58
Версия Delphi: Delphi 10.4
Репутация: 10
По умолчанию

Код:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
{>> Получение сведений о диске (метка/имя диска, файловая система, серийный номер) 
    
Получение информации о любом диске. 
Работает на 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.

Применение:
Код:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
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
Ответить с цитированием
Ответ


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

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

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

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


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


 

Сайт

Форум

FAQ

Соглашения

Прочее

 

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