Delphi -- 创建 桌面、发送到...、快速启动栏、开始菜单、程序菜单、右键菜 单
{================================================================= 功 能: 创建 桌面、发送到...、快速启动栏、开始菜单、程序菜单、右键菜单 快捷方式 参 数: 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;
分类:
DELPHI
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
2014-05-21 RFID FDX HDX Technology
2012-05-21 xilinx spartan-3a oddr2
2012-05-21 xilinx spartan-3a iob