Ir ao topo

Tecnobyte

Logomarca da Tecnobyte
Contato por WhatsApp

WhatsApp

(69) 3421-6756

Contato por Telefone

(69) 3421-6756

(69) 3421-6757

Enviar mensagem

Enviar

mensagem

Contato por Facebook

Facebook

Vídeos

Vídeos

Atendimento de segunda a sexta, das 08h00 às 19h00 (horário de Brasília).

Banner

Delphi - Outros

Como programar meu aplicativo para abrir arquivos a partir do Windows Explorer?

Inclua na seção uses: Registry
Problema:

Criei um editor de textos no Delphi. Agora gostaria que o 
Windows Explorer usasse este editor para abrir arquivos com
a extensão .dpg e .dan. Como fazer?

Solução:

Para fazer isto será necessária a criação de algumas chaves no
Registro do Windows. O exemplo abaixo cria todas as chaves
necessárias.

- Coloque um TButton e no evento OnClick dele coloque o
  código abaixo:

procedure TForm1.Button1Click(Sender: TObject);
var
  Reg: TRegistry;
begin
  Reg := TRegistry.Create;
  try
    Reg.RootKey := HKEY_CLASSES_ROOT;
    Reg.LazyWrite := false;

    { Define o nome interno (ArquivoDaniel) e uma legenda
      que aparecerá no Windows Explorer (Arquivo do Daniel) }
    Reg.OpenKey('ArquivoDaniel', true);
    Reg.WriteString('', 'Arquivo do Daniel');
    Reg.CloseKey;

    { Define o comando a ser executado quando abrir um
      arquivo pelo Windows Explorer (NomeDoExe %1). O símbolo
      %1 indica que o arquivo a ser aberto será passado como
      primeiro parâmetro para o aplicativo - ParamStr(1). }
    Reg.OpenKey('ArquivoDaniel\shell\open\command', true);
    Reg.WriteString('', ParamStr(0) + ' %1'); { NomeDoExe %1 }
    Reg.CloseKey;

    { Define o ícone a ser usado no Windows Explorer:
      0 - primeiro ícone do EXE
      1 - segundo ícone do EXE, etc }
    Reg.OpenKey('ArquivoDaniel\DefaultIcon', true);
    Reg.WriteString('', ParamStr(0) + ',0'); { 0 = primeiro ícone }
    Reg.CloseKey;

    { Define as extensões de arquivos que serão abertos pelo
      meu aplicativo }

    { *.dpg }
    Reg.OpenKey('.dpg', true);
    Reg.WriteString('', 'ArquivoDaniel');
    Reg.CloseKey;

    { *.dan }
    Reg.OpenKey('.dan', true);
    Reg.WriteString('', 'ArquivoDaniel');
    Reg.CloseKey;
  finally
    Reg.Free;
  end;
end;

- Coloque um TMemo;
- No evento OnShow do Form coloque o código abaixo:

procedure TForm1.FormShow(Sender: TObject);
begin
  { Se o primeiro parâmetro for um nome de arquivo existente... }
  if FileExists(ParamStr(1)) then
    { Carrega o conteúdo do arquivo no memo }
    Memo1.Lines.LoadFromFile(ParamStr(1));
end;

*** Para testar ***
- Execute este programa;
- Clique no botão para criar as chaves no Registro do Windows;
- Feche o programa;
- Crie alguns arquivos com as extensões .dpg e .dan;
- Vá ao Windows Explorer e procure pelos arquivos criados;
- Experimente dar um duplo-clique sobre qualquer dos arquivos
  com uma das extensões acima.

Observações

Existem outros recursos que poderão ser configurados. Porém, para começar, este já é um bom exemplo.

O conteúdo desta página pode ajudar alguém? Compartilhe!