Criar atalho na area de trabalho via delphi

11/12/2003

11

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á.


Responder

Posts

11/12/2003

Maicongabriel

[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]


Responder

04/10/2016

Fábio Sela

// 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;
Responder

04/10/2016

Fábio Sela

Escrito em Delphi XE7
Responder
×
+1 DevUP
Acesso diário, +1 DevUP
Parabéns, você está investindo na sua carreira