1. {=================================================================
  2. 能:
  3. 创建 桌面、发送到...、快速启动栏、开始菜单、程序菜单、右键菜单 快捷方式
  4. 数:
  5. FileName : 快捷方式执行文件名
  6. Description : 快捷方式描述信息
  7. Arguements : 快捷方式执行参数
  8. ShowName : 快捷方式显示名称
  9. Location : 快捷方式类别
  10. id : 需设置状态的队列号(255 为设置)
  11. CreateOrDelete: 是创建还是删除(默认为创建 true)
  12. 值:
  13. 注:
  14. 需要引用 Registry, ShlObj, ComObj, ActiveX, RegStr 单元
  15. =================================================================}
  1. procedure TMainForm.CreateShortcut(FileName,Description,Arguements,ShowName:
  2. string;
  3. Location: ShortcutType; id: byte; CreateOrDelete: boolean=true
  4. var
  5. cObj :IUnknown;
  6. sLink :IShellLink;
  7. pFile :IPersistFile;
  8. sDir,spath,key,tmp :string;
  9. wFileName :WideString;
  10. mReg :TRegistry;
  11. begin
  12. cObj :=CreateComObject(CLSID_ShellLink //创建COM对象
  13. sLink :=cObj as IShellLink; //COM对象转化为IShellLink型接口
  14. pFile :=cObj as IPersistFile; //COM对象转化为IPersistFile型接口
  15. //获取路径
  16. sPath :=ExtractFilePath(FileName
  17. with sLink do begin
  18. SetPath(PChar(FileName)); //设置执行文件名
  19. SetArguments(PChar(arguements)); //设置执行参数
  20. SetDescription(Pchar(Description)); //设置描述信息
  21. SetWorkingDirectory(PChar(sPath)); //设置工作路径,即执行程序所在目录
  22. end;
  23. //获取各快捷方式的实际目录
  24. mReg :=TRegistry.Create;
  25. with mReg do begin
  26. if Location=ST_CONTEXT then //添加右键菜单
  27. begin
  28. RootKey :=HKEY_CLASSES_ROOT;
  29. tmp:= '*shell'+ShowName;
  30. if CreateOrDelete then
  31. begin
  32. if OpenKey(tmp,true) then
  33. begin
  34. //用writestring将设置值写入打开的主键
  35. WriteString('',ShowName+'(&k)'
  36. CloseKey;
  37. end;
  38. if OpenKey(tmp+'command',true) then
  39. begin
  40. //command子键的内容是点击右键后选择相应项后要运行的程序;
  41. //%1是在单击右键时选中的文件名
  42. //WriteString(,'c:delphimyprogram.exe+"%1"');
  43. WriteString('',FileName
  44. CloseKey;
  45. end;
  46. end
  47. else
  48. DeleteKey(tmp
  49. Free;
  50. exit;
  51. end;
  52. RootKey :=HKEY_CURRENT_USER;
  53. key :=REGSTR_PATH_EXPLORER; //Delphi在单元RegStr中定义的常量
  54. tmp :=key + 'Shell Folders';
  55. OpenKey(tmp, false
  56. case Location of
  57. ST_DESKTOP: sDir :=ReadString('Desktop'
  58. ST_SENDTO: sDir :=ReadString('SendTo'
  59. ST_STARTMENU: sDir :=ReadString('Start Menu'
  60. ST_PROGRAMS: sDir :=ReadString('Programs'
  61. ST_QUICKLAUNCH:
  62. begin
  63. sDir :=ReadString('AppData'
  64. sDir :=sDir + 'MicrosoftInternet ExplorerQuick Launch';
  65. end;
  66. end;
  67. //生成快捷方式文件名
  68. if ShowName='' then
  69. begin
  70. ShowName :=ChangeFileExt(FileName, '.Lnk'
  71. ShowName :=ExtractFileName(ShowName
  72. end
  73. else
  74. ShowName:= ShowName+'.lnk';
  75. if sDir<>'' then
  76. begin
  77. //生成快捷方式全路径名
  78. wFileName :=sDir + '' + ShowName;
  79. if (id<255) then
  80. begin
  81. if FileExists(wFileName) then
  82. //RzCheckGroup1.ItemChecked[id]:= true;
  83. end
  84. else
  85. //保存或删除生成的快捷方式文件
  86. if CreateOrDelete then
  87. pFile.Save(PWChar(wFileName), false)
  88. else
  89. DeleteFile(wFileName
  90. end;
  91. Free;
  92. end;
  93. end;

http://www.cnblogs.com/shangdawei/p/4518740.html

Delphi -- 创建 桌面、发送到...、快速启动栏、开始菜单、程序菜单、右键菜 单的更多相关文章

  1. vc++ windows 快速启动栏创建快捷方式

    创建快速启动栏 在windows软件开发中,软件安装过程中总是需要在快速启动栏创建快捷方式,下面介绍一种快速启动栏创建快捷方式的方法,具体代码如下:(该方法不支持win10,目前还没有找到win10的 ...

  2. Win7 开启显示快速启动工具栏,发送到快速启动右键菜单

    开启Win7快速启动栏 许多网友一定记得在 Windows 7 之前的 Windows 系统都有个快速启动(quick launch)区域. 比如 IE 浏览器.Windows Media Playe ...

  3. 根据权限显示隐藏SharePoint 2010快速启动栏的链接

    转:http://www.360sps.com/Item/ShowAndHiddenLink.aspx 在SharePoint 2010的快速启动栏中可以根据权限来显示或隐藏列表.库.网站的链接,如果 ...

  4. LXPanel自定义添加应用程序到快速启动栏

    LXPanel是Linux下LXDE项目的一个桌面面板软件.我一开始接触的时候,对于自己自定义的程序到快速启动栏绕了很多弯路,这里记录下,防止以后自己忘了.还有一点就是很多时候,panel下的应用程序 ...

  5. 如何用INNO安装添加快捷启动方式到Win7的快速启动栏(超级任务栏)

    问题:如何用INNO安装添加快捷启动方式到Win7的快速启动栏(超级任务栏) 在XP下,添加方式是直接把快捷方式复制到%appdata%\Microsoft\Internet Explorer\Qui ...

  6. Win7快速启动栏

    http://jingyan.baidu.com/article/456c463bbc1d140a583144cf.html 1. 在任务栏上右键 -> 工具栏 -> 新建工具栏.   在 ...

  7. win7和win8如何设置快速启动栏

    a.在任务栏上右键 -> 工具栏 -> 新建工具栏 -> 跳出选择文件夹对话框,在文件夹里面(光标山洞处)输入这个路径,然后按回车: %userprofile%\AppData\Ro ...

  8. win7 系统如何设置快速启动栏

    a.在任务栏上右键 -> 工具栏 -> 新建工具栏 -> 跳出选择文件夹对话框,在文件夹里面(光标山洞处)输入这个路径,然后按回车: %userprofile%\AppData\Ro ...

  9. 自定义 SharePoint 2010 快速启动栏和顶部链接栏

    转:http://vickynuli.blog.163.com/blog/static/180438492201281434249486/ 在网上找到篇文章,自定义快速启动栏和顶部链接栏,以下为代码, ...

随机推荐

  1. oschina 开发工具

    开发工具 29反编译工具 26持续集成系统 19SQL注入工具 139Git开源工具 138Java开发工具 43.NET开发工具 85PHP开发工具 96C/C++开发工具 70Ruby/Rails ...

  2. iOS 本地化应用程序(NSLocalizedString)

    App本地化的需要不用讲大家也都明白,本文将介绍一种简单的方法来实现字符串的本地化. 在不考虑本地化的情况下,我们如果在代码中给一个Button定义title,一般会这样写: btn.titleLab ...

  3. 常用位操作,读8位 I2C 1302 18B20 .

    /*1302*/ unsigned char DS1302OutputByte(void) //实时时钟读取一字节(内部函数) { unsigned char i; for(i=8; i>0; ...

  4. UItableViewCell上的button点击无响应的办法

    由于IOS7中添加了滑动后出现编辑按钮的操作,所以使用scrollView来处理,UITableViewCellScrollView有对触摸的相应处理,导致按钮的点击效果被屏蔽了,但是点击事件还是在的 ...

  5. Python常用模块中常用内置函数的具体介绍

    Python作为计算机语言中常用的语言,它具有十分强大的功能,但是你知道Python常用模块I的内置模块中常用内置函数都包括哪些具体的函数吗?以下的文章就是对Python常用模块I的内置模块的常用内置 ...

  6. 分享非常有用的Java程序 (关键代码) (一)

    原文:分享非常有用的Java程序 (关键代码) (一)   分享一些非常有用的Java程序 (关键代码) ,希望对你有所帮助. 1.  得到当前方法的名字 String methodName = Th ...

  7. Docker学习笔记(4) — 开启Docker远程访问

    默认情况下,Docker守护进程会生成一个socket(/var/run/docker.sock)文件来进程本地进程通信,而不会监听任何端口,因此只能在本地使用docker客户端或者使用Docker ...

  8. Linux 命令整理

    一.文件目录命令 1.建立目录:mkdir 目录名 2.删除空目录:rmdir 目录名 3.无条件删除子目录: rm -rf 目录名 4.改变当前目录:cd 目录名 (进入用户home目录:cd ~; ...

  9. [置顶] ssize_t与size_t-linux

    ssize_t: signed size_t [注释:signed 有符号] size_t: 标准C库中定义的,应为unsigned int [注释:unsigned 无符号] 一.size_t 增强 ...

  10. linux网络体系架构

    原创kylin_zeng:http://blog.csdn.net/kylin_fire_zeng  本文参考国嵌视频教程,再此感谢国嵌教育. 一.协议栈层次对比: 1)网络接口层把数据链路层和物理层 ...