做好的程序如何增加桌面上的快捷方式!(100分)

  • 主题发起人 主题发起人 gsqywjg
  • 开始时间 开始时间
G

gsqywjg

Unregistered / Unconfirmed
GUEST, unregistred user!
做好的程序如何增加桌面上的快捷方式!
 
1。在程序上点鼠标右键
2。选择创建快捷方式
 
我是说用程序控制!
 
最好找个第三方控件

简单而且不用记代码!
 
function CreateShellLink(const Filename, Description, ShortcutTo, Parameters,
WorkingDir, IconFilename: String; const IconIndex, ShowCmd: Integer): Boolean;
var
Obj: IUnknown;
SL: IShellLink;
PF: IPersistFile;
WideFilename: WideString;
begin
Obj := CreateComObject(CLSID_ShellLink);
SL := Obj as IShellLink;
SL.SetPath(PChar(ShortcutTo));
SL.SetArguments(PChar(Parameters));
if WorkingDir <> '' then
SL.SetWorkingDirectory(PChar(WorkingDir));
if IconFilename <> '' then
SL.SetIconLocation(PChar(IconFilename), IconIndex);
SL.SetShowCmd(ShowCmd);
if Description <> '' then
SL.SetDescription(PChar(Description));
PF := Obj as IPersistFile;
WideFilename := Filename;
Result := SUCCEEDED(PF.Save(PWideChar(WideFilename), True));
end;

 
Delphi中创建新快捷方式:
Visual Studio 5.0光盘中VFP5.0子目录下带一个STKIT432.DLL,其中有一个函数
的API如下(Object Pascal 定义):
fucntion fCreateShellLink(DestPath, LinkName, LinkAppPath, LinkArgs: Pchar)
: Integer; stdcall; external 'STKIT432.DLL';
(但是,我试验过却不能用,不知道是否使用不当)
另一种通过COM自动化的方法创建快捷方式如下:
uses … , ShlObj, ActiveX, ComObj;
procedure CreateShellLink(const DestPath, LinkName, LinkAppPath,
LinkArgs, Description: String);
Var
aObj: IUnknown;
WFileName: WideString;
Begin
aObj := CreateComObject(CLSID_ShellLink);
With aObj as IShellLink do begin
{对MS-DOS程序,一般建议使用SetShowCmd(SW_SHOWMAXIMIZED);}
SetShowCmd(SW_NORMAL);
SetArguments(Pchar(LinkArgs));
SetDescription(Pchar(Description));
SetPath(Pchar(LinkAppPath));
SetWorkingDirectory(Pchar(ExtractFilePath(LinkAppPath)));
End;
{将一个String赋给WideString,转换过程由Delphi自动完成}
WFileName := DestPath + '/' + LinkName;
(aObj as IPersistFile).Save(PWChar(WFileName), False);
End;
使用CreateShellLink过程要保证路径文件名参数正确,如下:
CreateShellLink('C:/Pwin98/Desktop', '快捷方式名', 'C:/Command.com',
'', '简短描述');
CreateShellLink('C:/Pwin98/Desktop', 'Win32程序.Lnk', 'D:/Setup.exe', '', '');
 
procedure TFormAbout.SetLink(linkfile, programfile: string);
var
Reg: TRegIniFile;
WFileName: WideString;
AnObj: IUnKnown;
Shlink: IShellLink;
PFile: IPersistFile;
begin
AnObj := CreateComObject(CLSID_ShellLink);
shLink := AnObj as IShellLink;
PFile := AnObj as IPersistFile;
shLink.SetWorkingDirectory(PChar(ProgramFile));
programfile:=programfile+'/iFORM.exe';
shLink.SetPath(PChar(programfile));
Reg := TRegIniFile.Create('Software/MicroSoft/Windows/CurrentVersion/Explorer');
WFileName := Reg.ReadString('Shell Folders', 'Desktop', '') + '/' + linkfile + '.lnk';
PFile.Save(PWChar(WFileName), True);
Reg.Free;
end;

procedure XXX;
begin
SetLink('SoftName',ExtractFileDir(Application.exename));
end;
 
我在想你这个问题,如果在程序中加入在桌面建立快捷方式的程序段,程序在每次运行时
是不是都从这里经过,或是还加入一个逻辑判断?
我认为,在程序中建立桌面快捷方式的方法是不可取的,除非你是自己在建立一个安装程序,
如果是作好的程序,最简单的是使用installshield 建立一个桌面快捷方式,方便!反安装时
不用你动手,uninstallshield帮你搞掂!
 
同意楼上说的,你可以用installshield做一个安装程序,就可以创建一个桌面快捷方式
 
用一个制作安装程序东西来搞就行了。
 
用installshield做个安装程序,自动创建快捷方式
 
后退
顶部