Mudando o ícone de um atalho

Técnicas de uso de interfaces

Olá amigos, mais uma vez usando interfaces vamos mudar o ícone de um atalho. Usaremos o mesmo princípio empregado em um de meus artigos (Criando e excluindo atalhos do Desktop). Criaremos um objeto que faça uso das interfaces IShellLink, IUnknown e IPersistFile.

Mudando o atalho

Inicie um novo projeto e desenhe uma tela semelhante a Figura 1.

 

 

Figura 1. Tela de alteração de atalhos

No corpo do projeto crie um procedimento usando o algoritimo da Listagem 1.Nele está contido o código fonte para a criação dos objetos e atribuição de valores para a criação do atalho.

 

Listagem 1. AlterarIcone

procedure TForm1.AlterarIcone(Atalho: string; NovoIcone: PAnsiChar);

var

  MeuObjeto: IUnknown;

  MeuSLink: IShellLink;

  MeuPFile: IPersistFile;

  wNomeArquivo: WideString;

begin

  MeuObjeto := CreateComObject(CLSID_ShellLink);

  MeuSLink := MeuObjeto as IShellLink;

  MeuPFile := MeuObjeto as IPersistFile;

  MeuSLink.SetIconLocation(PChar(edEndIcone.Text), 0);

  wNomeArquivo := edArquivo.Text;

  MeuPFile.Save(PWChar(wNomeArquivo), False);

end;

 

Não podemos nos esquecer que é necessário a declaração das units ShellApi, ShlObj, ActiveX, ComObj, Registry. No evento onClick do botão “Alterar Ícone” basta chamar o procedimento informando os parâmetros necessários: Endereço do atalho, Endereço do ícone (*.ICO).

 

Listagem 2. onClick do botão Alterar ícone

procedure TForm1.Button1Click(Sender: TObject);

begin

  AlterarIcone(ExtractFileName(edArquivo.Text),

    PChar(edEndIcone.Text));

end;

 


Figura 2.

 

Figura 3.

Conclusões

O uso de interfaces facilita a criação de deteminadas tarefas que seu sistema deve desenvolver.