s3c, a mensagem é a seguinte:
O arquivo já está sendo usado por outro processo.s3c, só para resumir tudo.
Estou conseguindo abrir a gaveta do DVD por três códigos:
PRIMEIRO(Fornecido por você)
CODE
procedure TForm1.Button1Click(Sender: TObject);
//uses Variants, ComObj;
var
SA:Variant;
begin
SA := CreateOleObject('Shell.Application');
//SA.NameSpace(17).ParseName('G:\').InvokeVerb('E&ject');
SA.NameSpace(17).ParseName('G:\').InvokeVerb('E&jetar');
SA := Unassigned;
end;
SEGUNDO(Fornecido por você)
CODE
procedure TForm1.Button3Click(Sender: TObject);
const IOCTL_Storage_Eject_Media = $002D4808; IOCTL_Storage_Load_Media = $002D480C;
var hDevice:THandle; dRet:DWord;
begin
HDevice := CreateFile(PChar('\\.\g:'),
Generic_Read or Generic_Write,
0,
nil,
Open_Existing,
0,
0);
DeviceIoControl(hDevice, IOCTL_Storage_Eject_Media, nil, 0, nil, 0, dRet, nil); // Ejeta
//DeviceIoControl(hDevice, IOCTL_Storage_Load_Media, nil, 0, nil, 0, dRet, nil); // Fecha
CloseHandle(hDevice);
end;
TERCEIRO(Fornecido pelo Churc)
CODE
procedure TForm1.Button2Click(Sender: TObject);
begin
AbreSafado('G', 'open');
end;
procedure AbreSafado(const Drive: Char; szAcao: String);
var
szBuff: String;
begin
szBuff := 'open ' + Drive + ':\ type cdaudio alias DRIVE';
mciSendString(PChar(szBuff), nil, 0, 0);
mciSendString(PChar('set DRIVE door ' + szAcao), nil, 0, 0);
mciSendString(PChar('close all'), nil, 0, 0);
end;
Problemas até agora para mim1) Não consigo fechar com nenhum código.
2) Não consigo pegar a letra do DVD.
Fiz esse resumo para facilitar até pra mim mesmo quando ficar consultando os códigos e também
para facilitar aos que, como eu, tem menos experiência na procura.
Agora observe que coisa curiosa:
SE abrir pelo código 1 e mandar fechar depois pelo código que estamos analisando ele não fecha mais a mensagem agora é
A operação foi concluida com êxitoOutra coisa se usar o código 1 para abrir, fechar manualmente é claro e depois tentar abrir pelo código 2
ele não abre. Tenho que fechar o programa abrir novamente e mandar abrir o dvd pelo código 2, aí sim ele abre.