RE:acceso a unidad cd-rom
En mi artículo "OBTENIENDO LA LETRA DE LA UNIDAD DE CD-ROM" publicado en el Boletín Pascal #14 presento la función GetFirstCdRomDrive que como su nombre lo indica (en inglés) devuelve la designación de la primera unidad de CD-ROM: http://www.latiumsoftware.com/es/pascal/0014.php#7
Para llamar una aplicación o documento te sugiero el uso de la API ShellExecute pues el uso de WinExec hace muchísimos años que es obsoleto. Para más información sobre ShellExecute lee mi artículo "Ejecutando una aplicación externa": http://www.latiumsoftware.com/es/pascal/00002.php
En síntesis, un código como este hará lo que quieres:
var
CdDrive: string;
begin
CdDrive := GetFirstCdRomDrive;
if CdDrive = '' then
Application.MessageBox('No se encontró unidad de CD-ROM',
'Error', MB_ICONEXCLAMATION)
else
if ShellExecute(Form1.Handle, nil, PChar(CdDrive + 'programa.exe'),
nil, nil, SW_SHOWNORMAL) <= 32 then
Application.MessageBox('No se pudo ejecutar la aplicacion del CD',
'Error', MB_ICONEXCLAMATION);
end;
En el ejemplo estoy asumiendo que la aplicación programa.exe está en el directorio raíz del CD.
Espero que te sirva.
Ernesto D'Spirito
http://www.latiumsoftware.com/es/index.php