Esta funcion hace exactamente lo que buscas:bool VisorInstalado(char *Extension)
// Funcion que devuelve un valor booleano segun este instalado un programa asociado a la extension.
{
TRegistry *Registro = new TRegistry;
try{
Registro->RootKey = HKEY_CLASSES_ROOT;
if(Registro->KeyExists(Extension)){
// Si hay un visor para el programa.
return(true);
}else{
// No hay un visor para el programa.
return(false);
}
}catch(...){
// No sabemos nada.
return(false);
}
}
}
Para trabajar con un fichero, cuya extencion esta reconocida puedes usar esta otra funcion:
void AbrirArchivo(char *Archivo)
// Abre el archivo con el programa asociado en Windows.
{
ShellExecute(NULL, NULL , Archivo, NULL, NULL, SW_SHOWNORMAL);
}
Su forma de uso, es sencilla:
if(VisorInstalado(".pdf")){
AbrirArchivo("ejemplo.pdf");
}
Espero que te sea util.
Saludos.