Como ejetar CD-Rom ?

Delphi

17/11/2003

Olá.
Primeiro de tudo queria avisar que fiquei um tempo sem acessar o forum pois estou cheio de coisas a fazer.

Bom, queria saber se alguem sabe e poderia me passar o código de como ejetar o CD-Rom. Eu queria um que pudesse ser informado qual o drive que eu quero ejetar.

Obrigado mesmo!


Nildo

Nildo

Curtidas 0

Respostas

Gandalf

Gandalf

17/11/2003

{Para Abrir:}
mciSendString(´Set cdaudio door open wait´, nil, 0, handle);

{Para Fechar:}
mciSendString(´Set cdaudio door closed wait´, nil, 0, handle);


GOSTEI 0
Nildo

Nildo

17/11/2003

Até aí beleza.. Mas eu tenho 2 drives de CD-Rom. O Drive ´D´ e o ´E´. Ele está ejetando o drive ´D´. Como eu faço entao pra ejetar o drive ´E´?


GOSTEI 0
Gandalf

Gandalf

17/11/2003

não sei, peguei essa dica em um manual de dicas
tente mudar o 0 por 1 talvez de certo


GOSTEI 0
Gandalf

Gandalf

17/11/2003

talvez sirva para fechar apenas o cd que tem o cabo de audio
mciSendString(´Set [b:d12b7baad0]cdaudio[/b:d12b7baad0] door open wait´, nil, 0, handle);
isso deve ser usado emprogramas para tocar cd de audio


GOSTEI 0
Nildo

Nildo

17/11/2003

Mas funciona. Ele abre o CD principal só.
Dae eu achei essa função que abre qual eu quiser, mas não estou conseguindo agora fechar o drive. Aki vai:

function OpenDrive(DriveLetter: char): longint;
var
   ParamString: string;
begin
   if DriveLetter = #0 then
   begin
      ParamString:=´set cdaudio door open´;
      Result:=mciSendString(PChar(ParamString),nil,0,0);
   end
   else
   begin
      ParamString:=DriveLetter + ´: Alias Drive_´ + DriveLetter + ´ Type CDAudio´;
      Result:=mciSendString(PChar(´open ´ + ParamString),nil,0,0);

      if Result=0 then
         Result:=mciSendString(PChar(´set ´ + ´Drive_´ + DriveLetter + ´ door open´),nil,0,0);

      if Result=0 then
        Result:=mciSendString(PChar(´close ´ + ´Drive_´ + DriveLetter),nil,0,0);
   end;
end;

E pra chamar a função:
var
   b: PChar;
   err: Integer;
begin
   err := OpenDrive(´D´);
   b := PChar(AllocMem(255));

   if err <> 0 then
   begin
      mciGetErrorString(err, B, 255);
      ShowMessage(b);
   end;
end;

Será que alguem consegue fazer fechar o drive? Ps.: Só trocando os OPEN por CLOSE não funciona =(


GOSTEI 0
Cebikyn

Cebikyn

17/11/2003

Se para abrir é:
´set ´ + ´Drive_´ + DriveLetter + ´ door open´

pq não tentar:
´set ´ + ´Drive_´ + DriveLetter + ´ door [b:1bc9e876c4]closed[/b:1bc9e876c4]´ para fechar?

Deve funcionar...


GOSTEI 0
Nildo

Nildo

17/11/2003

Putzzz como naum lembrei do [b:5fc033d846]CLOSED[/b:5fc033d846].. Estava colocando [b:5fc033d846]CLOSE[/b:5fc033d846].
Valew Cebikyn.


GOSTEI 0
POSTAR