Lenguaje de programación Borland Delphi
Este truco sirve para asociar a una extensión una aplicación, es decir, cuando se abra un fichero con esta extensión, automáticamente, se ejecutará la aplicación configurada para esta extensión. Por ejemplo, cuando ejecutamos un documento de Word (de extensión ".doc") se abre Word directamente.
En el USES del formulario deberemos poner: Registry y ShlObj. Introducimos un botón llamado bAsociarExtension y en el evento click del mismo ponemos el siguiente código:
procedure TformTrocear.bAsociarExtensionClick(Sender: TObject);
procedure RegistraExtension( Extension,
TipoFichero,
Descripcion,
Exe:string;
IndiceIcono: integer);
{Uses: Registry, ShlObj}
var
Reg: TRegistry;
begin
Reg := TRegistry.Create;
try
with Reg do
begin
RootKey := HKEY_CLASSES_ROOT;
OpenKey(Extension, True);
WriteString('', TipoFichero);
CloseKey;
OpenKey(TipoFichero, True);
WriteString('', Descripcion);
CloseKey;
OpenKey(TipoFichero + '\DefaultIcon', True);
WriteString('', Exe + ',' + IntToStr(IndiceIcono));
CloseKey;
OpenKey(TipoFichero + '\Shell\Open', True);
WriteString('', '&Open');
CloseKey;
OpenKey(TipoFichero + '\Shell\Open\Command', True);
WriteString('', '"' + Exe + '" "%1"');
CloseKey;
end;
SHChangeNotify( SHCNE_ASSOCCHANGED,
SHCNF_IDLIST,
nil, nil);
finally
Reg.Free;
end;
end;
begin
RegistraExtension( '.trz',
'Trozos',
'Trozos de fichero para unir con AjpdSoft Trocear Fichero',
Application.ExeName,
0);
MessageDlg('A partir de ahora, al hacer doble click sobre un fichero ' +
'con extensión .trz se ejecutará este programa. Si cambia el programa ' +
'de ubicación deberá volver a asociar la aplicación.', mtInformation,
[mbok], 0);
end;
Nota: en este caso, cada vez que se haga doble click o se abra un fichero con extensión .trz, por ejemplo: Prueba.trz, se ejecutará nuestra aplicación. Se lo hemos indicado en "Application.ExeName".
Cuando se abre nuestra aplicación por hacer doble click sobre el fichero asociado (.trz), se le pasará como parámetro el nombre del fichero y la ubicación. Con lo cual, si queremos que al ejecutarse nuestra aplicación, por abrir un archivo asociado a la misma, sepamos qué fichero la ha ejecutado, basta con:
if ParamStr(1) <> '' then //si se ha hecho doble click a un fichero de extensión .trz
begin
txtFicheroUnir.Text := ParamStr(1);
//...
end;
Publicado el: 2003-10-12