Utilizamos cookies propias y de terceros. [Más información sobre las cookies].
Política de cookies
Proyecto AjpdSoft

· Inicio
· Buscar
· Contactar
· Cookies
· Descargas
· Foros
· Historia
· Nosotros
· Temas
· Top 10
· Trucos
· Tutoriales
· Wiki
Determinar la aplicación con la que se ejecuta una extensión y el tipo de fichero - Delphi
Lenguaje de programación Borland Delphi


Las aplicaciones asociadas con extensiones de archivo se guardan en el Registro de configuraciones de Windows (Regedit). Esta información se encuentra en: HKEY_CLASSES_ROOT. Dentro de esta clave habrá una subclave por cada extensión con la información que necesitamos obtener en el valor "(Predeterminado)" se guarda la clase correspondiente a la aplicación que abre el fichero y para cada tipo de fichero también habrá una subclave dentro de HKEY_CLASSES_ROOT con la ruta del fichero ejecutable que abre dicha clase de ficheros (en HKEY_CLASSES_ROOT\NOMBRECLASE\Shell\Open\Command).

A continuación os mostramos un ejemplo completo en Delphi de dos funciones: una obtiene la ruta y el ejecutable de la aplicación asociada a la extensión y la otra obtiene el tipo de fichero de que se trata:

unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, registry;

type
  TForm1 = class(TForm)
    Button1: TButton;
    Edit1: TEdit;
    Edit2: TEdit;
    Edit3: TEdit;
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

function obtenerAplicacion (fichero : string) : string;
var
  clase : string;
  Reg: TRegistry;
begin
  Result := '';
  Reg := TRegistry.Create(KEY_EXECUTE);
  Reg.RootKey := HKEY_CLASSES_ROOT;
  clase := '';
  if Reg.OpenKeyReadOnly(ExtractFileExt(fichero)) then
  begin
    clase := Reg.ReadString('');
    Reg.CloseKey;
  end;
  if clase <> '' then
  begin
    if Reg.OpenKeyReadOnly(clase + '\Shell\Open\Command') then
    begin
      Result := Reg.ReadString('');
      Reg.CloseKey;
    end;
  end;
  Reg.Free;
end;

function obtenerTipoFichero (fichero : string) : string;
var
  clase : string;
  Reg: TRegistry;
begin
  Result := '';
  Reg := TRegistry.Create(KEY_EXECUTE);
  Reg.RootKey := HKEY_CLASSES_ROOT;
  clase := '';
  if Reg.OpenKeyReadOnly(ExtractFileExt(fichero)) then
  begin
    clase := Reg.ReadString('');
    Reg.CloseKey;
  end;
  if clase <> '' then
  begin
    if Reg.OpenKeyReadOnly(clase) then
    begin
      Result := Reg.ReadString('');
      Reg.CloseKey;
    end;
  end;
  Reg.Free;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
  Edit2.Text := obtenerAplicacion(Edit1.Text);
  Edit3.Text := obtenerTipofichero(Edit1.Text);
end;

end.




Publicado el: 2003-10-05

Visita nuestro nuevo sitio web con programas y contenidos actualizados: Proyecto A