Criar atalho na area de trabalho via delphi

Delphi

11/12/2003

Primeiramente olá para todos,

Alguem aqui do forúm teria uma função de como criar um atalho na area de trabalho??? Vai servir em um programa que eu mesmo desenvolvi para instalação de software e pintou esta dúvida, se alguém souber será de grande ajuda.

Obrigado desde já.


Nuk

Nuk

Curtidas 0

Respostas

Maicongabriel

Maicongabriel

11/12/2003

[b:792facc42a]Criar atalho no desktop[/b:792facc42a]

Coloque essas units na seção implementation :

uses ShlObj, ActiveX,ComObj, Registry;


Por último, crie uma procedure que faça o trabalho:

procedure CreateShortcut (FileName, Parameters, InitialDir, ShortcutName, ShortcutFolder : String);
var
  MyObject : IUnknown;
  MySLink : IShellLink;
  MyPFile : IPersistFile;
  Directory : String;
  WFileName : WideString;
  MyReg : TRegIniFile;
begin
  MyObject := CreateComObject(CLSID_ShellLink);
  MySLink := MyObject as IShellLink;
  MyPFile := MyObject as IPersistFile;
  with MySLink do
  begin
    SetArguments(Parameters);
    SetPath(PChar(FileName));
    SetWorkingDirectory(PChar(InitialDir));
  end;
  MyReg := TRegIniFile.Create(´Software\MicroSoft\Windows\CurrentVersion\Explorer´);
  Directory := MyReg.ReadString (´Shell Folders´,´Desktop´,´´);
  WFileName := Directory + ´\´ + ShortcutName + ´.lnk´;
  MyPFile.Save (PWChar (WFileName), False);
  MyReg.Free;
end;


[i:792facc42a]retirado do TDDelphi - Dica 348[/i:792facc42a]


GOSTEI 0
Fábio Sela

Fábio Sela

11/12/2003

// Foi necessário reajustar o código para funcionar;
var
MyObject : IUnknown;
MySLink : IShellLink;
MyPFile : IPersistFile;
Directory : String;
FileName : String;
InitialDir : String;
ShortcutName : String;
Parameters : PWideChar;
WFileName : WideString;
MyReg : TRegIniFile;
begin
MyObject := CreateComObject(CLSID_ShellLink);
MySLink := MyObject as IShellLink;
MyPFile := MyObject as IPersistFile;
with MySLink do
begin
SetArguments(Parameters);
SetPath(PChar(FileName));
SetWorkingDirectory(PChar(InitialDir));
end;
MyReg := TRegIniFile.Create('Software\\MicroSoft\\Windows\\CurrentVersion\\Explorer');
Directory := MyReg.ReadString ('Shell Folders','Desktop','');
WFileName := Directory + '\\' + ShortcutName + '.lnk';
MyPFile.Save (PWChar (WFileName), False);
MyReg.Free;
end;
GOSTEI 0
Fábio Sela

Fábio Sela

11/12/2003

Escrito em Delphi XE7
GOSTEI 0
POSTAR