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?

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

时间: 2024-12-29 23:59:33

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

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

开启Win7快速启动栏 许多网友一定记得在 Windows 7 之前的 Windows 系统都有个快速启动(quick launch)区域. 比如 IE 浏览器.Windows Media Player 程序可以在里面快速启动. “快速启动”工具拦使用以下文件夹中的文件:%userprofile%\Application Data\Microsoft\Internet Explorer\Quick Launch Windows 7 全新的任务栏 其实,Windows 7 里面虽然取消了快速启动,

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

LXPanel是Linux下LXDE项目的一个桌面面板软件.我一开始接触的时候,对于自己自定义的程序到快速启动栏绕了很多弯路,这里记录下,防止以后自己忘了.还有一点就是很多时候,panel下的应用程序列表不是最全的,这个时候你需要手动去/usr/share/applications下去查看,LXPanel在applications下有一个程序叫“主菜单”,这个程序可以给你添加自定义快速启动程序或者是用来改变小图标对应程序的所在路径和属性.但我们今天不讲这个,我们介绍一个更通用的方法: LXPan

windows添加快速启动栏

步骤: 右击任务栏--选择"新建工具栏" 在"文件夹"路径中填入%appdata%\Microsoft\Internet Explorer\Quick Launch并单点"选择文件夹" 右键单击任务栏--取消"锁定任务栏",并将"Quick Lanunch(快速启动栏)"移动到左侧,然后右击"Quick Lanunch(快速启动栏)"取消对"显示文本"和"显

ubuntu14.04登陆后只显示桌面文件,快速启动栏不显示,终端不能打开

问题描述 : ubuntu14.04登陆后只显示桌面文件,快速启动栏不显示,终端不能打开 解决办法: 快捷键ctrl + alt + F1进入文本命令行界面, $  rm ~/.gconf ~/.gconfd ~/.metacity ~/.compiz-1 ~/.config/compiz-1 ~/.config/dconf -rf $  sudo shutdown -r now

win7快速启动栏

1,如果您对Windows 7中的新任务栏不满意,那么只需一点时间即可恢复旧的快速启动工具栏. 2,右击任务栏,选择工具栏——新的工具,在文件夹对话框中键入“%UserProfile%\AppData\Roaming\Microsoft\Internet Explorer\Quick Launch”,然后在点击选择文件夹即可.任务栏“使用小图标”. 3,在语言栏旁边就会出现快速启动栏(Quick Launch).然后取消锁定任务栏,右键快速启动栏,把“显示文本”“显示标题”去掉,就和XP的快速启

在Visual Studio中快速启动调试Web应用程序

原文:http://blog.csdn.net/effun/article/details/2638535 从2003到2005,Visual Studio在启动调试的功能上进行了一些改善,不过因为只是简单的一个F5键,很多人可能都不会注意.其实也已经不是很记得清楚在2003启动调试是什么样的问题,因为已经有两年多没用了,只是依稀记得每启动一次就会打开一个新的IE窗口.因为打开IE是需要耗费一点时间的,所以总在寻求一个办法减少这个过程所消耗的时间. 后来2005来了,这个问题被有效地解决了.VS

win7一键拖动生成快速启动栏

一键拖动生成快速启动工具栏 ^#x:: ;自动添加快速启动工具栏 if had_added() ExitApp ql_add() Sleep,200 if (is_locked()) { lock_unlock() } Sleep,200 clear() Sleep,200 control_move() control_set() Sleep,200 lock_unlock() blockinput,off ;===========================================

win7如何开启快速启动栏

设置步骤如下: 1.右键任务栏空白区域,检查是否解除锁定任务栏,需解锁: 2.右键任务栏空白区域,点击工具栏---新建工具栏: 3.选择C:\Users\Administrator\AppData\Roaming\Microsoft\Internet Explorer\Quick Launch整个文件夹,点击选择文件夹: 4.右击添加的quick launch工具栏,去除显示文本.显示标题俩个选项: 5.拖动该工具栏到左侧即可. 来源: https://zhidao.baidu.com/ques

Ubuntu 将应用程序固定到快速启动栏

Ubuntu上没有快捷方式的说法,而通过软件中心安装的软件就有图标,并能加入到启动器上,这是因为它们有一个desktop配置文件的缘故.这些配置文件在/usr/share/applications这个文件夹下面,既然这样,随便打开一个配置文件,然后依葫芦画瓢,写了个Sublime Text的desktop文件: 1 2 3 4 5 6 7 8 9 10 #!/usr/bin/env xdg-open     [Desktop Entry]     Name=Sublime Text 2