PDA

View Full Version : سوال: به دست آوردن لیست هارد دیسک های سیستم



Mask
دوشنبه 25 دی 1391, 17:30 عصر
سلام
بر روی سیستم من 3 تا هارد دیسک هست.
یکیش همون هارد دیسک اصلی سیستمم هست و یکی دیگه ،هاردی هست که به صورت مجازی ساختم و یکیشم فلشم هست.
شکل زیر :
http://www.axofile.com/images/vhb5wnif8oyda85ibqb1.jpg
میخواستم تعداد این هارد ها (disk)رو به دست بیارم.
یه چیزی شبیه دستور Diskpart:


DISKPART> list disk

Disk ### Status Size Free Dyn Gpt
-------- ------------- ------- ------- --- ---
Disk 0 Online 596 GB 4096 KB
Disk 1 Online 20 MB 1984 KB
Disk 2 Online 3854 MB 0 B

DISKPART>
البته زیاد سرج کردم اما چیز به درد بخوری نبود .دوستان کدی برای بدست آوردن این لیست دارند؟

BORHAN TEC
دوشنبه 25 دی 1391, 18:52 عصر
سلام
اگر از کامپوننت THddInfo استفاده می کنید می توانید از کدی مثل این بهره ببرید:
type
TDrives = set of TDrive;

procedure TForm1.Button1Click(Sender: TObject);
var
Drive: TDrive;
Drives: TDrives;
// برای این که متوجه شویم درایور مربوطه وجود دارد یا ندارد
DiskSize: Int64;
begin
Drives :=
[dPrimaryMaster,
dPrimarySlave,
dSecondaryMaster,
dSecondarySlave,
dTertiaryMaster,
dTertiarySlave,
dQuaternaryMaster,
dQuaternarySlave];

for Drive in Drives do
begin
try
DiskSN := '';
HDDInfo1.Drive := Drive;
DiskSize := HDDInfo1.Size;

if DiskSize > 0 then
begin
ListBox1.Items.Add(HddInfo1.Serial
+' '
+ IntToStr(HDDInfo1.Size)
{ + Another Informations!!!}) ;

end;
except
// Catch all exceptions (^_^)
end;
end;
end;
برای دانلود کامپوننت HddInfo می توانید به این آدرس رجوع کنید:
http://download.famouswhy.com/thddinfo/

موفق باشید...

Felony
دوشنبه 25 دی 1391, 19:13 عصر
طبق معمول WMI .

http://stackoverflow.com/questions/8519658/how-to-call-a-list-of-the-physically-attached-hard-disks-using-free-pascal-or

Mask
دوشنبه 25 دی 1391, 19:31 عصر
سلام
اگر از کامپوننت THddInfo استفاده می کنید می توانید از کدی مثل این بهره ببرید:
type
TDrives = set of TDrive;

procedure TForm1.Button1Click(Sender: TObject);
var
Drive: TDrive;
Drives: TDrives;
// برای این که متوجه شویم درایور مربوطه وجود دارد یا ندارد
DiskSize: Int64;
begin
Drives :=
[dPrimaryMaster,
dPrimarySlave,
dSecondaryMaster,
dSecondarySlave,
dTertiaryMaster,
dTertiarySlave,
dQuaternaryMaster,
dQuaternarySlave];

for Drive in Drives do
begin
try
DiskSN := '';
HDDInfo1.Drive := Drive;
DiskSize := HDDInfo1.Size;

if DiskSize > 0 then
begin
ListBox1.Items.Add(HddInfo1.Serial
+' '
+ IntToStr(HDDInfo1.Size)
{ + Another Informations!!!}) ;

end;
except
// Catch all exceptions (^_^)
end;
end;
end;
برای دانلود کامپوننت HddInfo می توانید به این آدرس رجوع کنید:
http://download.famouswhy.com/thddinfo/

موفق باشید...
ممنون مهندس/.
اما نمیدونم چرا کار نمیده.

BORHAN TEC
دوشنبه 25 دی 1391, 19:54 عصر
عجیبه،
من توی دو تا سیستم تست کردم و درست هم کار میکنه!!! :متفکر:
این خط رو پاکش کن و ببین حالا کار می کنه یا نه:
if DiskSize > 0 then