Ver Mensaje Individual
  #4  
Antiguo 02-07-2008
Avatar de escafandra
[escafandra] escafandra is offline
Miembro Premium
 
Registrado: nov 2007
Posts: 2.197
Reputación: 20
escafandra Tiene un aura espectacularescafandra Tiene un aura espectacular
Si quieres registrar un tipo de archivo para abrir con una determinada aplicación, tienes que abrir el registro de Windows y crear en HKEY_CLASSES_ROOT la clave correspondiente a ese archivo (.ext) y luego escribir otra clave con el tipo de archivo para definir el programa que la abre y su icono.

Abre el registro y cotillea los tipos de archivo y cómo se definen.

Bueno, aquí tienes el código:

Código:
#include <Registry.hpp>
#include <shlobj.h>

void
RegisterFileType(AnsiString Ext, AnsiString PathExec)
{
  // Ext tipo de archivo : EXTENSION
  // PathExec: RUTA COMPLETA del ejecutable que queremos que lo abra

  TRegistry *Registry = new TRegistry;
  try{
    Registry->RootKey = HKEY_CLASSES_ROOT;
    // Crear la clave .Ext
    Registry->OpenKey("." + Ext, true);
    try{
      // Ccrear el valor con el nombre del tipo de archivo para esta clave (extfile)
      Registry->WriteString("", Ext + "file");
    }
    __finally{
      Registry->CloseKey();
    }
    // Crear una clave nueva para el nombre del tipo de archivo dado anteriormente (extfile)
    Registry->CreateKey(Ext + "file");
    // Crear una nueva clave para el icono por defecto
    Registry->OpenKey(Ext + "file\\DefaultIcon", true);
    // Crear un valor con el icono (PathExec.exe,0)
    try{
      Registry->WriteString("", PathExec + ",0");
    }
    __finally{
      Registry->CloseKey();
    }
    Registry->OpenKey(Ext + "file\\shell\\open\\command", true);
    //Crear el valor para el ejecutable que abre el tipo de archivo (PathExec.exe "%1")
    try{
      Registry->WriteString("", PathExec + " \"%1\"");
    }
    __finally{
      Registry->CloseKey();
    }
  }
  __finally{
    delete Registry;
  }
  // Notificar al sistema el cambio efectuado
  SHChangeNotify(SHCNE_ASSOCCHANGED, SHCNF_IDLIST, 0, 0);
}
Pruebalo y nos cuentas.

Saludos.

Última edición por escafandra fecha: 02-07-2008 a las 20:22:42.
Responder Con Cita