Olá amigos delphianos, este é o meu primeiro tutorial de delphi e ensinarei como associar uma determinada extensão ao seu aplicativo. Faremos isto usando o Delphi e o InnoSetup.
Primeiramente pelo Delphi.
Vamos às partes:
1ª - Uses
Inclua as seguintes units na cláusula Uses do seu Form:
Registry: Unit que manipulará o registro do windows (onde estão
as extensões, icones e aplicativos associados)
ShlObj: Unit que manipulará a shell do windows (nesse caso somente "dirá" ao
windows que foram feitas modificações na associação
de extensão)
2ª - A procedure
Declare uma procedure chamada "Associa" (ou outro nome
que você quiser)
na cláusula públic do seu form. Com o cursor de texto ao final
da procedure, aperte Ctrl+Shift+C para que seja criada
automaticamente o bloco da procedure Associa.
3ª - As variáveis
Dentro da procedure Associa, declare as variáveis:
procedure TForm1.associa;
Var
reg : TRegistry; // variável que sera usada para manipular o registro do windows.
ext : string; // extensão do seu aplicativo.
extipo : string; // tipo de extensão do seu aplicativo.
extdesc : string; // descrição da extensão do seu aplicativo.
begin
end;
4ª - O código
Agora, dentro do bloco da procedure Associa, coloque o seguinte
código:
procedure TForm1.associa;
Var
reg : TRegistry; // variável que sera usada para manipular o registro do windows.
ext : string; // extensão do seu aplicativo.
extipo : string; // tipo de extensão do seu aplicativo.
extdesc : string; // descrição da extensão do seu aplicativo.
begin
try
//troque "extensao" pela extensao do seu aplicativo
ext := '.extensao';
//aqui coloque o tipo da extensao do seu aplicativo
extipo := 'tipoextensao';
//aqui coloque a descrição da extensão do seu aplicativo
extdesc := 'Extensao do meu aplicativo';
//cria a variável que manipulará o registro do windows
reg := TRegistry.Create;
with reg do
begin
//chave que será editada
RootKey := HKEY_CLASSES_ROOT;
{cria a chave da extensão}
//cria a chave com a extensão do seu aplicativo
OpenKey(ext, true);
//define o tipo da extensao do seu aplicativo
WriteString('', extipo);
//fecha a chave
CloseKey;
{cria os parametros da extensão}
{ícone do arquivo}
//chave onde é definido o ícone do seu arquivo
OpenKey(Extipo + '\DefaultIcon', True);
//aqui coloque o caminho completo de onde está o icone do seu arquivo ou
//o caminho de uma biblioteca com icones (exemplos de como colocar
//bibliotecas mais abaixo)
WriteString('', 'caminho ou biblioteca de icones');
//fecha a chave
CloseKey;
{//chave onde é definida opções do menu de contexto
OpenKey(extipo + '\shell\Open',True);
//texto que aparecerá no lugar de "abrir" no menu de contexto
WriteString('','texto');
CloseKey;}
{Programa associado}
//chave onde é definida o caminho do seu aplicativo
OpenKey(extipo + '\shell\Open\Command', True);
//o %1 é o parâmetro que é passado ao aplicativo quando se abre o arquivo
//pelo explorer. esse parâmetro é o nome do arquivo que foi aberto.
WriteString('', Application.ExeName + ' "%1"');
//fecha a chave
CloseKey;
end;
finally
//notifica ao windows a mudança de associação de aplicativo à extensão
SHChangeNotify(SHCNE_ASSOCCHANGED, SHCNF_IDLIST, nil, nil);
//destrói a variável de manipulação do registro do windows
reg.free;
end;
end;
6ª - Anexo
Aqui vão exemplos de como usar bibliotecas de ícones quando
for associar um ícone ao arquivo do seu aplicativo.
//método normal
WriteString('', 'C:\meu programa\icone.ico');
//usando icones dentro do seu aplicativo (o número é o índice do ícone,
//sendo que um programa pode ter vários índices de ícones)
WriteString('', Application.ExeName + ',0');
//mesmo método acima, com a diferença que é usado bibliotecas do tipo DLL
WriteString('', 'C:\meu programa\icones.dll,-123');
Agora vai de cada um criar ou usar um método para associar um ícone
ao seu aplicativo. Obs: use uma dessas linhas de código quando for definir
o ícone
na chave DefaultIcon.
Registrando o tipo de arquivo pelo instalador da aplicação
Como vimos, para associar uma extensão a um programa é necessário
criar as respectivas chaves
no registro do Windows. Isto é possível ser feito também durante a instalação
da aplicação.
Abaixo veremos um exemplo de script de como realizar essa tarefa utilizando
o gerador de instaladores InnoSetp, ferramenta muito utilizada por desenvolvedores
de
software
em todo
o planeta:
[Registry]
Root: HKCR; Subkey: .QRP; ValueType: string; ValueData: ArquivoQRP; Flags: uninsdeletekey
Root: HKCR; Subkey: ArquivoQRP; ValueType: string; ValueData: Arquivo de visualização de relatório; Flags: uninsdeletekey
Root: HKCR; Subkey: ArquivoQRP\shell\open; ValueType: string; ValueData: &Abrir com AbrirQRP; Flags: uninsdeletevalue
Root: HKCR; Subkey: ArquivoQRP\shell\open\command; ValueType: string; ValueData: {app}\AbrirQRP.exe %1; Flags: uninsdeletevalue
Root: HKCR; Subkey: ArquivoQRP\DefaultIcon; ValueType: none; Flags: uninsdeletevalue
Bom galera, obrigado pela atenção e espero que esse artigo tenha
ajudado a tantas pessoas assim como me ajudou.
Qualquer dúvida, podem mandar e-mails para racdevc@msn.com que as responderei.
Abraços!
Contato: racdevc@msn.com
|