Utilizamos cookies propias y de terceros. Al navegar entendemos que aceptas el uso de cookies. +Info.
Política de cookies
Proyecto AjpdSoft

· Inicio
· Buscar
· Contactar
· Cookies
· Descargas
· Foros
· Historia
· Nosotros
· Temas
· Top 10
· Trucos
· Tutoriales
· Usuario
· Wiki

Obtener la letra de la unidad de CD-ROM/DVD-ROM - Delphi
Lenguaje de programación Borland Delphi



GetLogicalDriveStrings y GetDriveType
Para obtener la letra de la unidad correspondiente a la primera unidad de CD-ROM en un sistema haremos uso de dos funciones de la API de Windows: GetLogicalDriveStrings y GetDriveType. Con la primera recuperaremos la lista de de las unidades lógicas en un búfer. La lista es una secuencia de cadenas terminadas en nulo de cuatro caracteres de longitud (contando el terminador nulo), y termina en un caracter nulo, por ejemplo:
'a:'#0'b:'#0'c:'#0'd:'#0'f:'#0#0
Con GetDriveType podemos determinar si una unidad determinada es una unidad de CD-ROM comprobando si el valor devuelto es igual a la constante DRIVE_CDROM. La siguiente función devuelve la primera unidad lógica que corresponde a una unidad de CDROM. La función devuelve la cadena vacía ('') si no se encontró ninguna unidad de CDROM.

uses Windows;

function GetFirstCdRomDrive: string;
var
  r: LongWord;
  Unidades: array[0..128] of char;
  pUnidad: pchar;
begin
  Result := '';
  r := GetLogicalDriveStrings(sizeof(Unidades), Unidades);
  if r = 0 then exit;
  if r > sizeof(Unidades) then
    raise Exception.Create(SysErrorMessage(ERROR_OUTOFMEMORY));
  pUnidad := Unidades;  // Apunta a la primera unidad
  while pUnidad^ <> #0 do begin
    if GetDriveType(pUnidad) = DRIVE_CDROM then begin
      Result := pUnidad;
      exit;
    end;
    inc(pUnidad, 4);  // Apunta a la siguiente unidad
  end;
end;
Llamada de ejemplo:
procedure TForm1.Button1Click(Sender: TObject);
begin
  ShowMessage(GetFirstCdRomDrive);
end;




Publicado el: 2003-10-05

Este sitio web NO CONTIENE malware, todos los programas con código fuente aquí. Autor: Alonso Javier Pérez Díaz Google+ Síguenos en Google+