Ранг: 301.4 (мудрец), 194thx Активность: 0.17↘0.01 Статус: Участник
|
Создано: 09 ноября 2006 13:28 · Личное сообщение · #6
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs,MMSystem, StdCtrls;
type
TForm1 = class(TForm)
Button1: TButton;
Button2: TButton;
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
const
IOCTL_STORAGE_MEDIA_REMOVAL = $02D4804;
implementation
{$R *.dfm}
function LockCD(cdLetter : PChar):boolean;
var hDevice : THandle;
dwBytesReturned : DWORD;
l:boolean;
begin
result:=false;
l:=true;
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
result:=DeviceIoControl(hDevice, IOCTL_STORAGE_MEDIA_REMOVAL, @l, sizeof(l),nil, 0,dwBytesReturned, nil);
finally
CloseHandle (hDevice);
end;
end;
function UnLockCD(cdLetter : PChar):boolean;
var hDevice : THandle;
dwBytesReturned : DWORD;
l:boolean;
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
result:=DeviceIoControl(hDevice, IOCTL_STORAGE_MEDIA_REMOVAL, @l, sizeof(l),nil, 0,dwBytesReturned, nil);
finally
CloseHandle (hDevice);
end;
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
UnLockCD('g');
end;
procedure TForm1.Button2Click(Sender: TObject);
begin
LockCD('g');
end;
end.
Заместо G указываешь букву своего привода
| Сообщение посчитали полезным: |