Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2005.02.06;
Скачать: CL | DM;

Вниз

нужно получить список установленых винчестеров   Найти похожие ветки 

 
Relaxxx   (2004-12-11 23:06) [0]

Здраствуйте!
нужно получить список установленых винчестеров, с указанием их Модели, Типа(IDE, SCSI) и главное серийного номера винчестера, это вообще возможно узнать?


 
GanibalLector ©   (2004-12-11 23:13) [1]

GetLogicalDrives,GetDriveType,GetVolumeInformation


 
GanibalLector ©   (2004-12-11 23:28) [2]

Кстати,примерчик завалялся.Естественно,он не рашает ВСЕХ твоих проблем,но кое-что есть.

const
DriveConst: array[1..26] of DWord =
   ($1,       $2,       $4,      $8,
    $10,      $20,      $40,     $80,
    $100,     $200,     $400,    $800,
    $1000,    $2000,    $4000,   $8000,
    $10000,   $20000,   $40000,  $80000,
    $100000,  $200000,  $400000, $800000,
    $1000000, $2000000);

procedure TForm1.FormCreate(Sender: TObject);
var QQ,i:DWord;
begin
QQ:=GetLogicalDrives();
for i:=1 to 26 do
if (QQ and DriveConst[i])>0 then
Combobox1.Items.Add(chr($40+i)+":\");
end;

procedure TForm1.ComboBox1Change(Sender: TObject);
var st:string;
VolumeName,FileSystemName : array [0..MAX_PATH-1] of Char;
VolumeSerialNumber,MaximumComponentLength,FileSystemFlags:DWord;
SectorsPerCluster,BytesPerSector,NumberOfFreeClusters,TotalNumberOfClusters:DWord;
begin

SetErrorMode(SEM_FAILCRITICALERRORS);

case GetDriveType(PChar(Combobox1.Text)) of
0:                st:="Type :"+chr(09)+chr(09)+chr(09)+"Unknown"+#10#13;
1:                st:="Type :"+chr(09)+chr(09)+chr(09)+"No_ROOT_DIR"+#10#13; // if RootPathName=nil
DRIVE_REMOVABLE:  st:="Type :"+chr(09)+chr(09)+chr(09)+"Flopy"+#10#13;
DRIVE_FIXED:      st:="Type :"+chr(09)+chr(09)+chr(09)+"Hard"+#10#13;
DRIVE_REMOTE:     st:="Type :"+chr(09)+chr(09)+chr(09)+"Remote"+#10#13;
DRIVE_CDROM :     st:="Type :"+chr(09)+chr(09)+chr(09)+"CD-ROM"+#10#13;
DRIVE_RAMDISK:    st:="Type :"+chr(09)+chr(09)+chr(09)+"RAM-Disk"+#10#13;end;
st:=st+#10#13;

if GetVolumeInformation(Pchar(Combobox1.Text),VolumeName,MAX_PATH,
@VolumeSerialNumber,MaximumComponentLength,FileSystemFlags,FileSystemName,MAX_PATH)=true  then
       begin
st:=st+"Name :"       +chr(09)+chr(09)+chr(09)+VolumeName+#10#13;
st:=st+"Serial :"     +chr(09)+chr(09)+chr(09)+inttohex(VolumeSerialNumber,8)+#10#13;
st:=st+"Length :"     +chr(09)+chr(09)        +inttostr(MaximumComponentLength)+#10#13;
st:=st+"File system :"+chr(09)+chr(09)        +FileSystemName+#10#13;
       end
else st:=st+"Drive not ready"+#10#13; //ShowMessage(SysErrorMessage(GetLastError));
st:=st+#10#13;

if GetDiskFreeSpace(Pchar(Combobox1.Text),SectorsPerCluster,
BytesPerSector,NumberOfFreeClusters,TotalNumberOfClusters)=true then
       begin
st:=st+"SectorsPerCluster :"+chr(09)+inttostr(SectorsPerCluster)+#10#13;
st:=st+"BytesPerSector : "+chr(09)+inttostr(BytesPerSector)+#10#13;
st:=st+#10#13;
st:=st+"FreeClusters : "+chr(09)+chr(09)+inttostr(NumberOfFreeClusters)+#10#13;
st:=st+"BusyClusters :"+chr(09)+chr(09)+inttostr(TotalNumberOfClusters-NumberOfFreeClusters)+#10#13;
st:=st+"TotalClusters :"+chr(09)+chr(09)+inttostr(TotalNumberOfClusters)+#10#13;
st:=st+#10#13;
st:=st+"FreeBytes :"+chr(09)+chr(09)+inttostr(NumberOfFreeClusters*(Int64(BytesPerSector*SectorsPerCluster)))+#10#13;
st:=st+"Busy :"+chr(09)+chr(09)+chr(09)+inttostr(TotalNumberOfClusters*(Int64(BytesPerSector*SectorsPerCluster))-
NumberOfFreeClusters*(Int64(BytesPerSector*SectorsPerCluster)))+#10#13;
st:=st+"TotalBytes :"+chr(09)+chr(09)+inttostr(TotalNumberOfClusters*(Int64(BytesPerSector*SectorsPerCluster)))+#10#13;
       end;

messagedlg(Pchar(st),MtInformation,[MbOk],0);
end;


 
grom   (2004-12-15 17:27) [3]

список установленых винчестеров, с указанием их Модели(IDE, SCSI)
procedure TForm1.Button1Click(Sender: TObject);
var
R:TRegistry;
st,s,f:string;
i,c,d:byte;
begin
R:=TRegistry.Create;
R.Access:=KEY_READ;
R.RootKey:=HKEY_LOCAL_MACHINE;
// st:="SYSTEM\CurrentControlSet\Services\Cdrom\Enum";
st:="SYSTEM\CurrentControlSet\Services\Disk\Enum";
if not R.OpenKey(st,False) then Exit;
c:=R.ReadInteger("Count");
if c = 0 then Exit;
for i:= 0 to c - 1 do
begin
R.OpenKey(st,False);
s:=R.ReadString(IntToStr(i));
R.CloseKey;
if not R.OpenKey("SYSTEM\CurrentControlSet\Enum\"+s,False)then Exit;
d:=pos("\",s);
f:=copy(s,1,d-1);
// ListBox1.Items.Add(s);
ListBox1.Items.Add(IntToStr(i+1)+".  "+f+"   "+R.ReadString("FriendlyName"));
R.CloseKey;
end;
R.Free;
end;


 
GuAV ©   (2004-12-15 21:57) [4]


>const
>DriveConst: array[1..26] of DWord =
>   ($1,       $2,       $4,      $8,
>    $10,      $20,      $40,     $80,
>    $100,     $200,     $400,    $800,
>    $1000,    $2000,    $4000,   $8000,
>    $10000,   $20000,   $40000,  $80000,
>    $100000,  $200000,  $400000, $800000,
>     $1000000, $2000000);


Всё проще :-)

procedure TForm1.FormCreate(Sender: TObject);
var QQ: DWord; D: Char;
begin
 QQ := GetLogicalDrives();
 for D := "A" to "Z" do
 begin
   if Odd(QQ) then
     Combobox1.Items.Add(D + ":\");
   QQ := QQ shr 1;
 end;
end;


 
Vit@ly ©   (2004-12-15 22:38) [5]

Сторонний компонент MiTec
определяет не толко это, но и многое другое


 
Vit@ly ©   (2004-12-15 22:40) [6]

Сорри, промахнулся веткой (WinAPI)



Страницы: 1 вся ветка

Текущий архив: 2005.02.06;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.052 c
1-1106414061
ninja
2005-01-22 20:14
2005.02.06
раздражающие звуки


14-1105705970
Fay
2005-01-14 15:32
2005.02.06
Работа


9-1098905911
_Дельфин_
2004-10-27 23:38
2005.02.06
OpenGL и 3DSMax


3-1104619964
Некто
2005-01-02 01:52
2005.02.06
Сообщение о дубликате записи


9-1099412843
Masacre
2004-11-02 19:27
2005.02.06
Обьясните пожалста, как вообще сделать сохранение в игре...