| 
| 
 | Вопрос # 1 226/ вопрос открыт / | 
 |  Приветствую, уважаемые эксперты!Не могли бы вы подсказать, как определить, заблокирован ли CD-ROM или нет?
 Спасибо
 
|  |   Вопрос задал: Илья (Hott Dogg) (статус: Посетитель)Вопрос отправлен: 24 декабря 2007, 00:49
 Состояние вопроса: открыт, ответов: 1.
 |  Ответ #1. Отвечает эксперт: Feniks Здравствуйте, Илья (Hott Dogg)!Попробуйте решить в лоб, т.е. сами его заблокировать/разблокировать.
 const
 {©Drkb v.3(2007): www.drkb.ru}
 
 IOCTL_STORAGE_MEDIA_REMOVAL = $02D4804;
 
 type
 PREVENT_MEDIA_REMOVAL=record
 PreventMediaRemoval:BOOL;
 end;
 
 //  fLock=true  - блокировать
 //  fLock=false - разблокировать
 function LockCD(cdLetter:char; fLock:boolean):boolean;
 var
 hDevice : THandle;
 dwBytesReturned : DWORD;
 pmr : PREVENT_MEDIA_REMOVAL;
 begin
 result:=false;
 hDevice := CreateFile(pchar('\\.\'+cdLetter+':'),GENERIC_READ,
 FILE_SHARE_READ or FILE_SHARE_WRITE,
 nil,OPEN_EXISTING, 0,0);
 if (hDevice=DWORD(-1)) then exit;
 
 try
 pmr.PreventMediaRemoval:=fLock;
 if (not DeviceIoControl(hDevice, IOCTL_STORAGE_MEDIA_REMOVAL, @pmr,
 sizeof(pmr),nil, 0,
 dwBytesReturned, nil)) then exit else result:=true;
 finally
 CloseHandle (hDevice);
 end;
 end;
 
 // блокируем
 procedure TForm1.Button1Click(Sender: TObject);
 begin
 if not LockCD('E',true) then
 MessageBox(Handle,'Can not lock CD','Error',MB_ICONERROR)
 else
 MessageBox(Handle,'CD is locked','Info',MB_ICONINFORMATION);
 end;
 
 // разблокируем
 procedure TForm1.Button2Click(Sender: TObject);
 begin
 if not LockCD('E',false) then
 MessageBox(Handle,'Can not unlock CD','Error',MB_ICONERROR)
 else
 MessageBox(Handle,'CD is unlocked','Info',MB_ICONINFORMATION)
 end;
 
|  | Ответ отправил: Feniks (статус: Бакалавр)Время отправки: 24 декабря 2007, 10:51
 
 |  
 Мини-форум вопросаВсего сообщений: 1; последнее сообщение — 24 декабря 2007, 18:35; участников в обсуждении: 1. 
|   | Илья (Hott Dogg) (статус: Посетитель), 24 декабря 2007, 18:35 [#1]:Спасибо, но как разблокировать/заблокировать я знаю Код взял из того же хэлпа, откуда и Вы
  Мне надо просто вывести статус привода на экран
 |  Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте. |