View Full Version : سوال: به دست آوردن لیست هارد دیسک های سیستم
  
Mask
دوشنبه 25 دی 1391, 18: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, 19: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, 20: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, 20: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, 20:54 عصر
عجیبه،
من توی دو تا سیستم تست کردم و درست هم کار میکنه!!! :متفکر:
این خط رو پاکش کن و ببین حالا کار می کنه یا نه:
if DiskSize > 0 then
 
vBulletin® v4.2.5, Copyright ©2000-1404, Jelsoft Enterprises Ltd.