Приветствую Вас Гость | RSS

Меню сайта

Реклама

Категории раздела
CD-ROM [11]
DLL и PlugIns [75]
Help файлы [20]
INI файлы [16]
RS232 [2]
Активные директории [1]
Директории [0]
Диски [0]
Корзина [5]
Порты [26]
Ресурсы [0]
Файлы [0]
Форматы файлов [15]
Ярлыки [0]

Наш опрос
Какие компоненты добавлять больше?
Всего ответов: 48

Статистика

Онлайн всего: 2
Гостей: 2
Пользователей: 0

Форма входа

Главная » Статьи » Файловая система » CD-ROM

Блокировка и разблокировка CD-ROM 2
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_Lock(False) - разблокирует 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 | Добавил: Angel (06.07.2008)
Просмотров: 403 | Рейтинг: 0.0/0
  Delphi Lab   Главная   Регистрация   Вход  
Интересная Цитата

Поиск

Магазин


Copyright MyCorp © 2025 Хостинг от uCoz