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.