![]() |
![]() ![]() ![]() ![]() ![]() |
![]() |
![]() |
Блокировка и разблокировка CD-ROM 2Delphi , Файловая система , CD-ROMБлокировка и разблокировка CD-ROM 2Автор: 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; Статья Блокировка и разблокировка CD-ROM 2 раздела Файловая система CD-ROM может быть полезна для разработчиков на Delphi и FreePascal. Комментарии и вопросыМатериалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.
|
||||
©KANSoftWare (разработка программного обеспечения, создание программ, создание интерактивных сайтов), 2007 ![]() |