Твой софтовый форум > Тематические форумы > Программирование

Как определить название CD-ROM

,

Пр: _NEC CD-RW NR-9300A для любой Window

Дата публикации: 28.05.2006 - 09:53
ShEriF
Помогите определить название CD-ROM`а.

Так чтобы было название модели (_NEC CD-RW NR-9300A) и соответствющаа этому названию буква. (_NEC CD-RW NR-9300A (F:))

и так все CD-ROM`ы в системе.

Можно с использованием Dll - помоемы этой - WNASPI32.DLL

или друними способами.

и желателно чтобы работало по Win9x-XP

Примеры преветствуются.


С уважением ShEriF
Paladin
Написал бы хоть, на чем ты программируешь.
ShEriF
javascript:emoticon('<_<')
smilie

Пограммирую я на Delphi v7.0

а эту прогу для которой я ищу как определить название CD-ROM
писал тоже на Delphi но с помощью библиотеки KOL
Paladin
Эта процедура выводит в ComboBox1 буквы CD приводов:
QUOTE
procedure List_Drives;
const
   DRIVE_UNKNOWN = 0;
   DRIVE_NO_ROOT_DIR = 1;
   DRIVE_REMOVABLE = 2;
   DRIVE_FIXED = 3;
   DRIVE_REMOTE = 4;
   DRIVE_CDROM = 5;
   DRIVE_RAMDISK = 6;
var
   r: LongWord;
   Drives: array[0..128] of char;
   pDrive: PChar;
begin
   r := GetLogicalDriveStrings(SizeOf(Drives), Drives);
   if r = 0 then Exit;
   if r > SizeOf(Drives) then
     raise Exception.Create(SysErrorMessage(ERROR_OUTOFMEMORY));
   pDrive := Drives;
   while pDrive^ <> #0 do
   begin
     if GetDriveType(pDrive) = DRIVE_CDROM then
       Form1.ComboBox1.Items.Add(pDrive);
     Inc(pDrive, 4);
   end;
end;

Эта позволяет получить метку диска:
QUOTE
function GetVolumeInfoFVS(const Dir:string;
  var FileSystemName,VolumeName:string;var Serial:longint):boolean;
{Получение информации о диске
Dir - каталог или буква требуемого диска
FileSystemName - название файловой системы
VolumeName - метка диска
Serial - серийный номер диска
В случае ошибки функция возвращает false}
var
  root:pchar;
  res:longbool;
  VolumeNameBuffer,FileSystemNameBuffer:pchar;
  VolumeNameSize,FileSystemNameSize:DWord;
  VolumeSerialNumber,MaximumComponentLength,FileSystemFlags:DWORD;
  s:string;
  n:integer;
begin
  n:=pos(':',Dir);
  if n> 0 then s:=copy(Dir,1,n+1) else s:=s+':';
  if s[length(s)]=':' then s:=s+'\';
  root:=pchar(s);
  getMem(VolumeNameBuffer,256);
  getMem(FileSystemNameBuffer,256);
  VolumeNameSize:=255;
  FileSystemNameSize:=255;
  res:=GetVolumeInformation(Root,VolumeNameBuffer,VolumeNameSize
  ,@VolumeSerialNumber,
  MaximumComponentLength, FileSystemFlags
  ,FileSystemNameBuffer,FileSystemNameSize);
  Result:=res;
  VolumeName:=VolumeNameBuffer;
  FileSystemName:=FileSystemNameBuffer;
  Serial:=VolumeSerialNumber;
  freeMem(VolumeNameBuffer,256);
  freeMem(FileSystemNameBuffer,256);
end;

procedure TForm1.Button1Click(Sender: TObject);
var s,s2,s3:string;
  ser:integer;
begin
     List_Drives;
     GetVolumeInfoFVS(combobox1.Items[1],s,s2,ser);
     label1.Caption:=ser;
end;


Осталось получить название дисководов...
ShEriF
Спосибо конечно за примери кода, но до етого я и сам додумался, мне набо было получить названия CD-ROM`ов - это для меня большая трудность.

А нахождения букв CD не очень сложная задача.

И вторая процедура распространяется в основном на HDD диски. Для CD приводов она практически бесполезна.
dr.xakep
меня тож этот вопрос интересует ... правда на C/C++, помогите плз.....
ShEriF
а аттаче пример программы написанной на Cи - так же прилогаются исходные коды. Юзай с опастью ибо автор программы не нисет ответственности за вред принесенный этой программой. smile.gif

Все всем спасибо, тему можно закрывать.


Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке: Как определить название CD-ROM
SoftoRooM © 2004-2024