Ver Mensaje Individual
  #2  
Antiguo 31-05-2004
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Reputación: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
Cita:
Empezado por soul6301
¿Cómo logro asociar un tipo de archivo a mi programa desde un programa hecho en Delphi
Simplemente debes escribir las entradas apropiadas en el registro. Por ejemplo, vamos a suponer que deseas asociar la extensión '.rom' a la aplicación 'RmDesigner.exe'. Deberás crear las siguientes entradas:

Código:
HKCR\.rom
  default value = 'RmDesigner.rom'

HKCR\RmDesigner.rom
  default value = 'Rm Designer master file'

HKCR\RmDesigner.rom\shell\open\command
  default value = 'c:\archivos de programas\roman software\RmDesigner.exe "%1"'
Aquí, HKCR corresponde a HKEY_CLASSES_ROOT. Bajo esta clave se crea la clave '.rom' cuyo valor por defecto es el nombre de la clave que realmente maneja la extensión; en este caso 'RmDesigner.rom', pero puedes usar cualquier identificador que gustes.

La siguiente clave es entonces 'RmDesigner.rom' cuyo valor por defecto será la descripción que desees que aparezca en el explorador; en este caso 'Rm Designer master file'. Si no pones nada, el explorador mostrará simplemente algo como 'Archivo ROM'.

Dentro de esta clave debes crear la clave 'shell\open\command', esto es, la clave 'shell', dentro de ella la clave 'open' y dentro de ella la clave 'command'.

El valor por defecto de la clave 'command' debe contener la ruta al ejecutable; en este caso 'c:\archivos de programas\roman software\RmDesigner.exe "%1"'. El símbolo %1 será sustituído por la línea de comandos, esto es, cuando se ejecute un archivo de extensión 'rom' el explorador pasará el nombre del archivo como parámetro al ejecutable.

Te recomiendo que antes de comenzar a experimentar husmees un poco en el registro para ver cómo funciona esto que te digo para extensiones ya registradas como, por ejemplo, '.txt'. Verás que cada clave tiene otros valores pero por el momento basta con los que te indico.

Para escribir estas claves en el registro desde tu aplicación Delphi puedes usar la clase TRegistry de la unidad Registry. Te pongo aquí un pequeño ejemplo:

Código Delphi [-]
(*
  Este procedimiento registra la extensión Ext con la 
  aplicación AppPath. El parámetro TypeName denota
  la clave del registro que maneja la extensión y el
  parámetro Description corresponde a la descripción
  que se muestra en el explorador de Windows.

  El método OpenKey de TRegistry abre la clave
  especificada. Si ésta no existe la crea.

  El primer parámetro del método WriteString es el
  nombre del identificador que desea escribirse dentro
  de una clave. Si se pasa la cadena vacía, corresponde
  al valor por defecto.
*)
procedure RegisterFileExt(Ext, TypeName, Description, AppPath: String);
var
  Registry: TRegistry;

begin
  Registry := TRegistry.Create;

  try
    Registry.RootKey := HKEY_CLASSES_ROOT;

    Registry.OpenKey(Ext, true);
    Registry.WriteString('', TypeName);
    Registry.CloseKey;

    Registry.OpenKey(TypeName, true);
    Registry.WriteString('', Description);

    Registry.OpenKey('shell\open\command', true);
    Registry.WriteString('', AppPath + ' "%1"');
  finally
    Registry.Free;
  end;
end;

Así, para el ejemplo anterior usarías:

Código Delphi [-]
RegisterFileExt(
  '.rom',
  'RmDesigner.rom',
  'Rm Designer Master file',
  'c:\archivos de programas\roman software\RmDesigner.exe'
);

// Saludos

Última edición por roman fecha: 31-05-2004 a las 05:28:51.
Responder Con Cita