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