Delphi: Criando um atalho na area de trabalho

Veja como criar um atalho no desktop do Windows com Delphi incluindo ActiveX, ComObj e ShlObj na clausula USES.

Inclua ActiveX, ComObj e ShlObj na clausula USES.

Para isso, a seguir temos os eventos do form codificados:

unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, ActiveX, ComObj, ShlObj, StdCtrls; type TForm1 = class(TForm) Button1: TButton; procedure FormCreate(Sender: TObject); procedure Button1Click(Sender: TObject); private { Private declarations } public { Public declarations } end; var Form1: TForm1; DirDesktop: String; implementation procedure TFMain.FormCreate(Sender: TObject); var ItemIDList : PItemIDList; begin SetLength(DirDesktop,MAX_PATH); SHGetSpecialFolderLocation(Application.Handle, CSIDL_DESKTOPDIRECTORY,ItemIDList); SHGetPathFromIDList(ItemIdList,PChar(DirDesktop)); SetLength(DirDesktop,StrLen(PChar(DirDesktop))); end; procedure TFMain.BitBtn1Click(Sender: TObject); var ShellLink : IShellLink; PersistFile : IPersistFile; NomeLnk : WideString; begin ShellLink := CreateComObject(CLSID_ShellLink) as IShellLink; PersistFile := ShellLink as IPersistFile; with ShellLink do begin // Informe o Título do ícone SetDescription(PChar('DESCRIÇÃO DO ATALHO')); // Informe o Caminho e o Arquivo SetPath(PChar('C:PASTAARQUIVO.EXE')); // Argumentos para linha de comando, caso existam SetArguments(PChar('')); // Informe o Caminho e o Arquivo SetWorkingDirectory( PChar(ExtractFilePath('C:PASTAARQUIVO.EXE'))); end; // Informe o nome do Atalho NomeLnk := DirDesktop + ' ' + ChangeFileExt('DESCRIÇÃO DO ATALHO','.lnk'); PersistFile.Save(PWideChar(NomeLnk),False); end;

Para ler os parâmetros contidos nos atalhos, como destino, "iniciar em" e etc., afim de corrigi-los ao ser chamado o executável, usamos o seguinte código:

IncludeTrailingPathDelimiter(ExtractFilePath(ParamStr(0))); //Pega a pasta do exe IncludeTrailingPathDelimiter(GetCurrentDir); //Pega a pasta do ícone ('Iniciar em')

Isso é muito útil para criar um arquivo .ini, por exemplo, numa rede interna podemos ter um único executável, o que facilita a atualização, já que os perfis de usuário (arquivo .ini) são gravados localmente (GetCurrentDir).

Nota: Essa dica foi enviada pelo nosso amigo Alvaro Vieira

Artigos relacionados