Fórum Como descobrir a letra do drive de cd-room #194368

11/11/2003

0

Pessoal gostaria de saber como descobrir a letra do drive de cd que está na máquina que está rodando a minha aplicação. Alguém sabe como fazer


Mineiro

Mineiro

Responder

Posts

11/11/2003

Seek

Caro Mineiro,

Para isso crie uma aplicação e adicione ao Form 3 componentes TButton. Faça a declaração CDROMDrive na área de declarações public como pode ser visto abaixo:

public
{ Public declarations }
Function CDROMDrive: Char;

Declare uso da biblioteca MMSystem na área uses da Unit

Logo em seguida, copie a função na área implementation

Function TForm1.CDROMDrive: Char;
Var
drivemap, mask: DWORD;
i: Integer;
root: String;
Begin
Result := #0;
root := ´A:\´;
drivemap := GetLogicalDrives;
mask := 1;
For i:= 1 To 32 Do
Begin
If (mask and drivemap) <> 0 Then
If GetDriveType( PChar(root) ) = DRIVE_CDROM Then
Begin
Result := root[1];
Break;
End;
mask := mask shl 1;
Inc( root[1] );
End;
End;

Faça a chamada à função CDROMDrive no evento OnClick do Button1. A mensagem de retorno do ShowMessage nos mostra a letra da unidade de CD.

procedure TForm1.Button1Click(Sender: TObject);
begin
ShowMessage(´CD-ROM Drive -> ´+CDROMDrive );
end;

Agora veremos como abrir e fechar a gaveta de CDs. Para isso usaremos a função mciSendString.
O código abaixo é responsável pela abertura da gaveta do CD. Copie o código no evento OnClick do Button2.

procedure TForm1.Button2Click(Sender: TObject);
begin
mciSendString(´Set cdaudio door open wait´, nil, 0, handle);
end;

O código abaixo é responsável pelo fechamento da gaveta do CD. Copie o código no evento OnClick do Button3.

procedure TForm1.Button3Click(Sender: TObject);
begin
mciSendString(´Set cdaudio door closed wait´, nil, 0, handle);
end;


[img:1793206e5a]http://www.clubedelphi.com.br/unidadecdrom1.gif[/img:1793206e5a]

Obs. dica retirada do proprio site.


Responder

Gostei + 0

11/11/2003

Beppe

function GetCDRomDrive(out DriveLetter: Char): Boolean;
var
  Drive: array[0..3] of Char;
  C: Char;
begin
  StrPCopy(Drive, ´A:\´);
  for C := ´A´ to ´Z´ do
  begin
    if GetDriveType(Drive) = DRIVE_CDROM then
    begin
      Result := True;
      DriveLetter := C;
      Exit;
    end;
    Inc(Drive[0]);
  end;
  Result := False;
end;


Chame assim:
var
  Drive: Char;
begin
  if GetCDRomDrive(Drive) then
  begin
    // a letra do drive está em Drive
  end;
end;


Ataliba


Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar