Вы уж простите, что на сях... сподручней было :\
Исходный код
Code: |
// ©Drkb v.3
//заблокировать void CMFcDlg::OnBnClickedButton1() { HANDLE hDevice = CreateFile ("\\\\.\\E:", GENERIC_READ, FILE_SHARE_READ | FILE_SHARE_WRITE, NULL, OPEN_EXISTING, NULL, NULL); DWORD dwBytesReturned = 0; PREVENT_MEDIA_REMOVAL pmr = {TRUE}; if(!DeviceIoControl (hDevice, IOCTL_STORAGE_MEDIA_REMOVAL, &pmr, sizeof(pmr), NULL, 0, &dwBytesReturned, NULL)) AfxMessageBox ("Door can\'t be locked"); CloseHandle (hDevice); }
//разблокировать void CMFcDlg::OnBnClickedButton2() { HANDLE hDevice = CreateFile ("\\\\.\\E:", GENERIC_READ, FILE_SHARE_READ | FILE_SHARE_WRITE, NULL, OPEN_EXISTING, NULL, NULL); DWORD dwBytesReturned = 0; PREVENT_MEDIA_REMOVAL pmr = {FALSE}; if(!DeviceIoControl (hDevice, IOCTL_STORAGE_MEDIA_REMOVAL, &pmr, sizeof(pmr), NULL, 0, &dwBytesReturned, NULL)) AfxMessageBox ("Door can\'t be unlocked"); CloseHandle (hDevice);
} |
Code: |
const {©Drkb v.3}
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; |
Автор: Krid
Просьба писать ваши замечания, наблюдения и все остальное,
что поможет улучшить предоставляемую информацию на этом сайте.
ВСЕ КОММЕНТАРИИ МОДЕРИРУЮТСЯ ВРУЧНУЮ, ТАК ЧТО СПАМИТЬ БЕСПОЛЕЗНО!