quarta-feira, 10 de julho de 2013

Pegar o destino de um atalho do Windows com Delphi

Olá, Boa Tarde Pessoal...
Depois de pesquisar muito na internet, encontrei pouco conteúdo sobre o assunto e resolvi postar aqui.
Nosso assunto hoje será como descobrir o destino de um atalho do windows.

Para que esta função rode corretamente é preciso declarar no uses as seguinte Units "ShellApi, ShlObj, ActiveX, ComObj, Registry" (sem as aspas).

1º - Declare a seguinte função:
   Function PegaDestinoAtalho(const LinkFileName:String):String;

2º - Na área de implementações, implemente-a da seguinte maneira:
   function TForm1.PegaDestinoAtalho(const LinkFileName: String): String;
   var
     psl : IShellLink;
     ppf : IPersistFile;
     Info : Array[0..MAX_PATH] of Char;
     wfs : TWin32FindData;
   begin
     CoCreateInstance(CLSID_ShellLink, nil, CLSCTX_INPROC_SERVER, IShellLink, psl);
     if psl.QueryInterface(IPersistFile, ppf) = 0 then
     begin
       ppf.Load(PWChar(WideString(LinkFileName)), 0);
       psl.GetPath(@info, MAX_PATH, wfs, SLGP_UNCPRIORITY);
       Result := info;
     end;
   end;

3º - Para utilizar a função, chame-a da seguinte forma:
   // Declare duas variáveis do tipo String ("caminho e destino").
     // "caminho" será o caminho do atalho e 
     // "destino" receberá o destino do atalho.
   caminho := 'C:\Users\usuario\Desktop\atalho.lnk';
   destino := PegaDestinoAtalho(caminho);

    OBS. 1: Em Breve postarei como ler todos os arquivos do tipo "*.lnk" de um determinado diretório.
    OBS. 2: Para fins de compatibilidade, esta dica foi escrita usando Delphi XE3.

    Fonte.: Algum lugar da Internet e alterado para melhor entendimento.

Esta foi a dica de hoje, se for útil, comentem.

Se você tem uma dica interessante, pode postar nos comentários.

Atenciosamente
Dica Chave.

Nenhum comentário:

Postar um comentário