|
Determinando la aplicación asociada
Copyright © 2000 Ernesto
De Spirito
¿Dónde está esa información?
Las aplicaciones asociadas con extensiones de archivo se guardan
en el Registro de Windows. Para obtener
esta información primero debemos obtener la "clase" a la que una
extensión pertenece. Esta información se encuentra en:
HKEY_CLASSES_ROOT\.ext\(predeterminado)
donde ".ext" es la extensión de fichero que uno quiera
(como ".txt", ".bmp", etc.). Luego obtenemos la línea de comandos
usada para abrir esa clase de archivos. Para hacerlo, obtenemos el
valor bajo:
HKEY_CLASSES_ROOT\clase\Shell\Open\Command\(predeterminado)
donde "clase" es la clase de archivo a la que está
asociada una extensión. Esa cadena usualmente tiene la forma:
"D:\PATH\APPNAME.EXT" "%1" -OPTIONS
donde %1 es el indicador de posición del documento a abrir
con la aplicación, así que buscamos su posición dentro de la cadena y lo
sustituimos por el nombre del fichero ingresado en el cuadro de texto
para obtener la línea de comando que necesitamos para abrir la
aplicación.
Ejemplo
La siguiente función devuelve la línea de comando de la aplicación
asociada para abrir un archivo de documento:
uses Registry, Windows, SysUtils;
function GetAssociation(const DocFileName: string): string;
var
FileClass: string;
Reg: TRegistry;
begin
Result := '';
Reg := TRegistry.Create(KEY_EXECUTE);
Reg.RootKey := HKEY_CLASSES_ROOT;
FileClass := '';
if Reg.OpenKeyReadOnly(ExtractFileExt(DocFileName)) then begin
FileClass := Reg.ReadString('');
Reg.CloseKey;
end;
if FileClass <> '' then begin
if Reg.OpenKeyReadOnly(FileClass
+ '\Shell\Open\Command') then
begin
Result := Reg.ReadString('');
Reg.CloseKey;
end;
end;
Reg.Free;
end;
|