Форум — Ответы ( К темам )
? | Dimman: логические диски (18-01-2003 18:05:04) |
Надо узнать количество локальных "жёстких" дисков на отдельно взятом компе. Т.е. "Всего дисков минус дисководы, мунус сетевые, минус CD и виртуальные". В какую сторону копать? | |
Владимир (19-01-2003 13:12:43) | |
Можно: 1 Воспользоваться компонентом DriveComboBox 2.Функции GetLogicalDrives() ,GetLogicalDriveStrings() — получить список логических дисков GetDriveType() — получить информацию о логическом диске void __fastcall TForm1::Button1Click(TObject *Sender) { char buff[60]; ZeroMemory(buff,60); GetLogicalDriveStrings(60,buff); for(int i = 0; i< 60; i++){ Label1->Caption = Label1->Caption + buff[i]+ " "; } } //----- void __fastcall TForm1::Button2Click(TObject *Sender) { AnsiString Root = "#:\\"; for(int i = 0; i<25; i++){ Root[1] = 'A' + i; switch(GetDriveType(Root.c_str())){ case 0 : ShowMessage("The drive type cannot be determined"); break; case 1 : ShowMessage("The root directory does not exist"); break; case DRIVE_REMOVABLE: ShowMessage("The disk can be removed"); break; case DRIVE_FIXED : ShowMessage("The disk cannot be removed"); break; case DRIVE_REMOTE : ShowMessage("The drive is remote (network) drive"); break; case DRIVE_CDROM : ShowMessage("The drive is a CD-ROM drive"); break; case DRIVE_RAMDISK : ShowMessage("The drive is a RAM disk"); break; } } } //----- | |
Devnvd (19-01-2003 13:54:20) | |
Если пройти по всем логическим дискам с функциями GetDriveType("A:\\",... GetVolumeInformation("A:\\",... То по первой можно узнать о типе: Network,Fixed,Removable,CDROM,RAM... А по второй узнать индивидуальные характеристики: серийный номер, имя,... Определив уникальные неповторяющиеся вы получите нужное число. Эти две функции работают и для Win9x и NT-систем. |