Delphi -- 创建 桌面、发送到...、快速启动栏、开始菜单、程序菜单、右键菜 单
2015-05-21 07:40
435 查看
{================================================================= 功 能: 创建 桌面、发送到...、快速启动栏、开始菜单、程序菜单、右键菜单 快捷方式 参 数: 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 -- 创建 桌面、发送到...、快速启动栏、开始菜单、程序菜单、右键菜 单
- 创建 桌面、发送到...、快速启动栏、开始菜单、程序菜单、右键菜单 快捷方式
- 创建快捷方式到桌面、任务栏、开始菜单、快速启动栏、程序组中
- Win7 开启显示快速启动工具栏,发送到快速启动右键菜单
- ubuntu 中增加鼠标右键菜单,为Windows 的exe 程序快速增加桌面快捷键
- java实现软件程序开机自动启动和创建程序的桌面快捷方式源代码
- VC++创建快捷方式、删除快捷方式、添加开始菜单程序组菜单并删除程序组菜单的实例
- java实现软件程序开机自动启动和创建程序的桌面快捷方式源代码
- 任务栏右键菜单关闭程序发送的消息
- win7基础 cmd 桌面空白处,按住shift后,通过右键菜单启动cmd窗口
- Cygwin右键菜单快速启动
- Windows7 创建右键发送到桌面的快捷方式
- 快速进入桌面 随机启动程序
- SPDL : 得到桌面,快速启动或程序组的路径
- 【rzxt】创建"常用程序"菜单 桌面一目了然
- 清理多余的 Windows 桌面右键菜单、新建菜单和发送到
- 如何在 Windows XP“快速启动”工具栏上重新创建“显示桌面”图标
- centos 创建桌面双击启动程序(更改图标)
- Windows7桌面多余的右键菜单、新建菜单和发送到里面的选项清理方法
- Win7系统如何在桌面右键菜单里添加自定义程序或网址?