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.

Nome do usuário logado no Windows com Delphi

Olá, Boa Tarde Pessoal...
Hoje vamos ver como saber o nome do usuário logado no Windows com o auxilio do Delphi.

1º - Declare a seguinte função:
   Function NomeUsuario: String;

2º - Na área de implementações, implemente-a da seguinte maneira:
   function TForm1.NomeUsuario: String;
   var
     lpBuffer : Array[0..20] of Char;
     nSize : dWord;
     mRet : boolean;
     erro : dWord;
   begin
     nSize := 120;
     mRet := GetUserName(lpBuffer, nSize);
     if mRet then
     begin
       Result := lpBuffer
     end
     else
     begin
       erro := GetLastError();
       MessageDlg('Ocorreu o erro ' + IntToStr(erro) + ' ao procurar o nome logado no computador.',
                  mtError, [mbOk], 0);
       Result := '';
     end;
   end;

3º - Para utilizar a função, chame-a da seguinte forma:
   nomeDoUsuario := NomeUsuario;

    OBS.: Para fins de compatibilidade, esta dica foi escrita usando Delphi XE3.

    Fonte.: Algum lugar da Internet.

Esta foi a dica de hoje, se for útil, comentem.
Se você tem uma dica interessante, pode postar nos comentários.
Atenciosamente
Dica Chave.