Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Можно ли программно заблокировать лоток CD [D1, D2, D3, D4, D5, D6, D7, Win95/98, Win2k, WinXP]


yaric ©   (2003-11-26 18:08:00) 

Можно ли программно заблокировать лоток CD, как это делает например Linux, когда сидюк примонтирован.
Если можно, то подскажите как.


Dakis   (2003-12-17 21:34:00) [1]

procedure Lock(Locking : Boolean);
var
Returned: Cardinal;
hDrive : HWND;
begin
hDrive:=CreateFile("\\.\H:",GENERIC_READ, FILE_SHARE_READ, nil, OPEN_EXISTING, 0, 0);
DeviceIoControl(hDrive,PREVENT_MEDIA_REMOVAL, @Boolean(Locking), sizeof(DisableEject), nil, 0, Returned, nil);
FileClose(HDrive);
end;


AbrosimovA   (2003-12-02 14:47:00) [2]

//Блокировать(Locked=true);Разблокировать(Locked=false) CD-ROM
//DriveCD - буква привода CD(Например, F:)

procedure Door_Lock(DriveCD:string; Locked:boolean);
const IOCTL_STORAGE_MEDIA_REMOVAL = $002D4804;
var hDrive : THandle;
Returned : DWORD;
DisableEject : boolean;
Drv: string;
begin
Drv:= "\\.\"+DriveCd;
hDrive := CreateFile(PChar(Drv), GENERIC_READ, FILE_SHARE_READ, nil, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, 0);
if GetLastError <> 0 then
MessageDlg("Ошибка:"+IntToStr(GetLastError), mtError, [mbOK], 0);
try
DisableEject := Locked;
if not DeviceIoControl(hDrive,
IOCTL_STORAGE_MEDIA_REMOVAL,
@DisableEject,
sizeof(DisableEject),
nil,
0,
Returned,
nil) then
MessageDlg("Ошибка:"+IntToStr(GetLastError), mtError, [mbOK], 0);
finally
CloseHandle(hDrive);
end;
end;


Nick Denry   (2003-11-26 20:52:00) [3]

MCILock...
Find in help


Наверх

Титульная страница Поиск, карта сайта Написать письмо