在delphi中建立程序的快捷方式--并将快捷方式放在开始->程序->的启动组中

王朝delphi·作者佚名  2006-01-09
窄屏简体版  字體: |||超大  

前几天应客户要求写这个东西,其实用VB,VC可能更快些,不过,我还是喜欢用DELPHI

首先 uses ActiveX,ComObj,StdCtrls,ShlObj,FileCtrl;

在指定文件夹建立当前应用程序才的快捷方式

procedure Tform1.MakeLink(Foldername:string;proName, lnkName, Description: string);

var

WorkDir, DestName: string;

aObj: IUnknown;

MyLink: IShellLink;

MyPFile: IPersistFile;

WFileName: WideString;

curdir: array[0..100] of Char;

begin

DestName := Foldername + lnkName;

aObj := CreateComObject(CLSID_ShellLink);

MyLink := aObj as IShellLink;

MyPFile := aObj as IPersistFile;

GetCurrentDirectory(sizeof(curdir), curdir);

workdir := curdir;

proname := trim(WorkDir)+'\'+proname;

with MyLink do

begin

SetShowCmd(SW_NORMAL);

SetArguments('');

SetDescription(pChar(Description));

SetPath(pChar(proName));

SetWorkingDirectory(pChar(WorkDir));

end;

CreateDir(ExtractFilePath(DestName));

WFileName := DestName;

MyPFile.Save(PWChar(WFileName), False);

end;

//获得开始->程序->的启动组 的路径

function Tform1.GetSpecialFolder: string;//get starup Floder

var

Pidl: PItemIDList;

handle : THandle;

Comp: TComponent;

LinkDir : string;

begin

result:='';

Comp := self;//self.owner;

handle := (Comp as TForm).handle;

if SUCCEEDED(SHGetSpecialFolderLocation(handle, CSIDL_COMMON_STARTUP, Pidl)) then //别的特殊路径也可以用CSIDL_COMMON或的,在delphi中查一下就可以了

begin

SetLength(LinkDir, MAX_PATH);

SHGetPathFromIDList(Pidl, PChar(LinkDir));

SetLength(LinkDir, StrLen(PChar(LinkDir)));

result:=linkdir+'\';

end;

end;

//部分内容借鉴了大富翁bbs上的内容

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
 
 
© 2005- 王朝網路 版權所有 導航