您的位置:首页 > 其它

创建 桌面、发送到...、快速启动栏、开始菜单、程序菜单、右键菜单 快捷方式

2008-10-31 09:28 961 查看
{=================================================================


功 能:


创建 桌面、发送到...、快速启动栏、开始菜单、程序菜单、右键菜单 快捷方式


参 数:


FileName : 快捷方式执行文件名


Description : 快捷方式描述信息


Arguements : 快捷方式执行参数


ShowName : 快捷方式显示名称


Location : 快捷方式类别


id : 需设置状态的队列号(255 为设置)


CreateOrDelete: 是创建还是删除(默认为创建 true)


返 回 值: 无


备 注:


需要引用 Registry, ShlObj, ComObj, ActiveX, RegStr 单元


=================================================================}


procedure TMainForm.CreateShortcut(FileName,Description,Arguements,ShowName: string;


Location: ShortcutType; id: byte; CreateOrDelete: boolean=true);


var


cObj :IUnknown;


sLink :IShellLink;


pFile :IPersistFile;


sDir,spath,key,tmp :string;


wFileName :WideString;


mReg :TRegistry;


begin





cObj :=CreateComObject(CLSID_ShellLink); //创建COM对象


sLink :=cObj as IShellLink; //COM对象转化为IShellLink型接口


pFile :=cObj as IPersistFile; //COM对象转化为IPersistFile型接口





//获取路径


sPath :=ExtractFilePath(FileName);


with sLink do begin


SetPath(PChar(FileName)); //设置执行文件名


SetArguments(PChar(arguements)); //设置执行参数


SetDescription(Pchar(Description)); //设置描述信息


SetWorkingDirectory(PChar(sPath)); //设置工作路径,即执行程序所在目录


end;





//获取各快捷方式的实际目录


mReg :=TRegistry.Create;


with mReg do begin


if Location=ST_CONTEXT then //添加右键菜单


begin


RootKey :=HKEY_CLASSES_ROOT;


tmp:= '*shell'+ShowName;


if CreateOrDelete then


begin


if OpenKey(tmp,true) then


begin


//用writestring将设置值写入打开的主键


WriteString('',ShowName+'(&k)');


CloseKey;


end;


if OpenKey(tmp+'command',true) then


begin


//command子键的内容是点击右键后选择相应项后要运行的程序;


//%1是在单击右键时选中的文件名


//WriteString(,'c:delphimyprogram.exe+"%1"');


WriteString('',FileName);


CloseKey;


end;


end


else


DeleteKey(tmp);


Free;


exit;


end;





RootKey :=HKEY_CURRENT_USER;


key :=REGSTR_PATH_EXPLORER; //Delphi在单元RegStr中定义的常量


tmp :=key + 'Shell Folders';


OpenKey(tmp, false);


case Location of


ST_DESKTOP: sDir :=ReadString('Desktop');


ST_SENDTO: sDir :=ReadString('SendTo');


ST_STARTMENU: sDir :=ReadString('Start Menu');


ST_PROGRAMS: sDir :=ReadString('Programs');


ST_QUICKLAUNCH:


begin


sDir :=ReadString('AppData');


sDir :=sDir + 'MicrosoftInternet ExplorerQuick Launch';


end;


end;





//生成快捷方式文件名


if ShowName='' then


begin


ShowName :=ChangeFileExt(FileName, '.Lnk');


ShowName :=ExtractFileName(ShowName);


end


else


ShowName:= ShowName+'.lnk';


if sDir<>'' then


begin


//生成快捷方式全路径名


wFileName :=sDir + '' + ShowName;


if (id<255) then


begin


if FileExists(wFileName) then


//RzCheckGroup1.ItemChecked[id]:= true;


end


else


//保存或删除生成的快捷方式文件


if CreateOrDelete then


pFile.Save(PWChar(wFileName), false)


else


DeleteFile(wFileName);


end;





Free;


end;


end;
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐