Сейчас на форуме: hgdagon, asfa, bartolomeo (+6 невидимых)

 eXeL@B —› Программирование —› Disable CD
Посл.ответ Сообщение

Ранг: 20.6 (новичок)
Активность: 0.020
Статус: Участник

Создано: 08 ноября 2006 07:38 · Поправил: buddy
· Личное сообщение · #1

Подскажите, плиз, как программно отключить CD-приводы и весь 'узел' (не знаю, как правильно назвать), т.е 'disable CD' и 'disable node'...




Ранг: 327.3 (мудрец)
Активность: 0.250
Статус: Участник

Создано: 08 ноября 2006 10:32
· Личное сообщение · #2

StarForce Nightmare

-----
in search of sunrise




Ранг: 20.6 (новичок)
Активность: 0.020
Статус: Участник

Создано: 08 ноября 2006 11:51
· Личное сообщение · #3

в яблочко)
Но всё-же как это реализовать на Delphi?



Ранг: 260.2 (наставник)
Активность: 0.190
Статус: Участник

Создано: 08 ноября 2006 12:10
· Личное сообщение · #4

buddy, во-первых не так просто(я сам не представляю как ето сделать ).
Разработкой StarForce Nightmare занималась целая команда профов.

Во-вторых StarForce Nightmare написан на асме. Если хочешь - бери олю и исследуй.

P.S. я советую бросить эту затею.



Ранг: 20.6 (новичок)
Активность: 0.020
Статус: Участник

Создано: 09 ноября 2006 12:54
· Личное сообщение · #5

sniperZ
После тщетных попыток исследования собственно и решил просить помощи советом. Но затея стоящая, когда-нибудь придёт озарение



Ранг: 301.4 (мудрец), 194thx
Активность: 0.170.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 указываешь букву своего привода



Ранг: 20.6 (новичок)
Активность: 0.020
Статус: Участник

Создано: 10 ноября 2006 13:46
· Личное сообщение · #7

Veliant
WOW!
Спасибо. Сори за нескромность, как сделать 'disable node'...


 eXeL@B —› Программирование —› Disable CD
:: Ваш ответ
Жирный  Курсив  Подчеркнутый  Перечеркнутый  {mpf5}  Код  Вставить ссылку 
:s1: :s2: :s3: :s4: :s5: :s6: :s7: :s8: :s9: :s10: :s11: :s12: :s13: :s14: :s15: :s16:


Максимальный размер аттача: 500KB.
Ваш логин: german1505 » Выход » ЛС
   Для печати Для печати