Блокировка и разблокировка CD-ROM 2Delphi , Файловая система , CD-ROMАвтор: ReLock Я сам долго искал, как блокировать/разблокировать CD-ROM на Delphi. Поэтому не претендую на авторство этой статьи. Просто собрал все, так сказать, в кучу. Проверено на D7. procedure TMainForm.CD_Lock(Locked: Boolean, DriveLetter: string); const IOCTL_STORAGE_MEDIA_REMOVAL = $002D4804; var hDrive: THandle; Returned: DWORD; DisableEject: boolean; begin hDrive := CreateFile(PChar('\\.\' + DriveLetter), GENERIC_READ, FILE_SHARE_READ, nil, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, 0); if GetLastError <> 0 then MessageDlg('Error:' + IntToStr(GetLastError), mtError, [mbOK], 0); try DisableEject := Locked; if not DeviceIoControl(hDrive, IOCTL_STORAGE_MEDIA_REMOVAL, // PREVENT_MEDIA_REMOVAL, @DisableEject, SizeOf(DisableEject), nil, 0, Returned, nil) then MessageDlg('Ошибка:' + IntToStr(GetLastError), mtError, [mbOK], 0) finally CloseHandle(hDrive) end; end;
CD_Lock(True) - блокирует CD-ROM Для полного веселья можно заблокировать все CD-ROMы в системе через это: procedure TMainForm.LockCDROMs; var w: dword; Root: string; i: byte; begin w := GetLogicalDrives; Root := '#:\'; for i := 0 to 25 do begin Root[1] := Char(Ord('A') + i); if (W and (1 shl i)) > 0 then if GetDriveType(PChar(Root)) = DRIVE_CDROM then begin DriveLetter := Copy(Root, 1, Length(Root) - 1); CD_Lock(True, DriveLetter) end end; end; Программа на языке Delphi, демонстрирующая способ блокировки и разблокировки приводов CD-ROM. Код состоит из двух процедур: Процедура CD_Lock Процедура
Процедура LockCDROMs Процедура
Пример использования Чтобы блокировать все приводы CD-ROM в системе, можно вызвать процедуру
Чтобы разблокировать конкретный привод CD-ROM, можно вызвать процедуру
Замечания
В статье описана функция блокировки и разблокировки CD-ROM на языке Delphi, которая позволяет предотвратить или разрешить извлечение компакт-диска из привода. Комментарии и вопросыПолучайте свежие новости и обновления по Object Pascal, Delphi и Lazarus прямо в свой смартфон. Подпишитесь на наш Telegram-канал delphi_kansoftware и будьте в курсе последних тенденций в разработке под Linux, Windows, Android и iOS Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.
|
||||
©KANSoftWare (разработка программного обеспечения, создание программ, создание интерактивных сайтов), 2007 |