day & night

Как определить название CD-ROM, Пр: _NEC CD-RW NR-9300A для любой Window
Дата обновления: , перейти к новому сообщению
icon14
#1
ShEriF



Бывалый
*

Группа: Пользователи
Сообщений: 17
Регистрация: 28.12.2005
Из: Omsk
Пользователь №: 95.717


Респектов: 0
----------


Предупреждений:


Помогите определить название CD-ROM`а.

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

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

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

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

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

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


С уважением ShEriF
User is offline
Go topGo end
 

Ответов(1 - 6)
3.01.2006 - 0:26
#2
Paladin



профи!
Group Icon

Группа: Наши Люди
Сообщений: 944
Регистрация: 7.03.2004
Из: г. Абакан
Пользователь №: 303


Респектов: 11
-----X----




Написал бы хоть, на чем ты программируешь.
User is offline
Go topGo end
3.01.2006 - 22:01
#3
ShEriF



Бывалый
*

Группа: Пользователи
Сообщений: 17
Регистрация: 28.12.2005
Из: Omsk
Пользователь №: 95.717


Респектов: 0
----------


Предупреждений:


javascript:emoticon('<_<')
smilie

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

а эту прогу для которой я ищу как определить название CD-ROM
писал тоже на Delphi но с помощью библиотеки KOL
User is offline
Go topGo end
17.01.2006 - 19:06
#4
Paladin



профи!
Group Icon

Группа: Наши Люди
Сообщений: 944
Регистрация: 7.03.2004
Из: г. Абакан
Пользователь №: 303


Респектов: 11
-----X----




Эта процедура выводит в 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;


Осталось получить название дисководов...
User is offline
Go topGo end
icon13 30.01.2006 - 22:17
#5
ShEriF



Бывалый
*

Группа: Пользователи
Сообщений: 17
Регистрация: 28.12.2005
Из: Omsk
Пользователь №: 95.717


Респектов: 0
----------


Предупреждений:


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

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

И вторая процедура распространяется в основном на HDD диски. Для CD приводов она практически бесполезна.
User is offline
Go topGo end
2.02.2006 - 20:29
#6
dr.xakep



Опытный юзверь
**

Группа: Пользователи
Сообщений: 138
Регистрация: 27.07.2005
Из: Димитров
Пользователь №: 31.475


Респектов: 4
-----X----


Предупреждений:


меня тож этот вопрос интересует ... правда на C/C++, помогите плз.....
User is offline
Go topGo end
28.05.2006 - 9:53
#7
ShEriF



Бывалый
*

Группа: Пользователи
Сообщений: 17
Регистрация: 28.12.2005
Из: Omsk
Пользователь №: 95.717


Респектов: 0
----------


Предупреждений:


а аттаче пример программы написанной на Cи - так же прилогаются исходные коды. Юзай с опастью ибо автор программы не нисет ответственности за вред принесенный этой программой. smile.gif

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

Присоединённые файлы
Присоединённый файл  CDSpeed12.rar ( 94.4кб ) Кол-во скачиваний: 8
User is offline
Go topGo end

Topic Options
Сейчас: 10.05.2024 - 15:13
Мобильная версия | Lite версия