在Delphi4的程序中怎样建立应用程序的快捷方式?

qingqing 2000-01-05 10:18:00
我准备用delphi4编写一个“安装程序的制作工具”,但一个很重要的问题难住了我,那就是——在Delphi4的程序中怎样建立应用程序(在桌面上或在开始菜单中)的快捷方式?请高手指点,不胜感谢?
...全文
194 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
qingqing 2000-01-07
  • 打赏
  • 举报
回复
问题已解决!
zdg 2000-01-05
  • 打赏
  • 举报
回复
有这方面的API支持....
需要建一个程序组和若干程序项...
在桌面上只需要将快捷方式Copy到\windows目录\Desktop\就可以了...
tiger 2000-01-05
  • 打赏
  • 举报
回复
Windows98的外壳也是由COM构成的,最简单的Shell接口是IShellLink,是建立快捷方式用的。正应为它最简单,很多将COM的书都拿它作例子,不过,如果你想用它在开始菜单,桌面等地方建快捷方式,还是不太简单的,要读注册表获得这些目录的路径,就不多讲了。

uses Comobj,ActiveX,ShlObj;

proceudre TForm1.Button1Click(Sender:TObject);
var
AnObj:IUnknown;
ShLink:IShellLink;
PFile:IPersistFile;
FileName:String;
WFileName:WideString;
begin
//access the two interface of the object
AnObj:=CreateComObject(CLSID_ShellLink);
ShLink:=AnObj as IShellLink;
PFile:=AnObj as IPersistFile;
//get the name of the application file
FileName:=ParamStr(0);
//set the link properties
ShLink.SetPath(PChar(FileName));
ShLink.SetWorkingDirectory(PChar(ExtractFilePath(FileName)));
//save the file,using a WideString!
WFileName:=ExtractFilePath(FileName)+Edit1.Text+'.lnk';//将快捷方式文件保存在本程序所在目录
PFile.Save(PWChar(WFileName),False);
end;
jiangtao 2000-01-05
  • 打赏
  • 举报
回复
////////////////////////////////////////////////////////////////////////////////
// - Tip 9 - Create a shortcut link on the desktop
//
// (sample call)
//
///////////////////////////////////////////////////////////////////////////////
procedure TMain.CreateLinkBtnClick(Sender: TObject);
const
ksAppName = 'c:\Win95\Notepad.exe' ;
ksCmdLineArgs = 'c:\Borland\Delphi3\Readme.txt' ;
ksLinkFilename = 'c:\temp\Delphix.lnk' ;
ksLinkDesc = 'My Cool Link' ;
var
bResult : boolean ;
begin
bResult := CreateLink( ksAppName, // App Name
ksCmdLineArgs, // Cmd line
ksLinkFilename, // link name
ksLinkDesc // Description
) ;

if ( bResult = false ) then
ShowMessage ('Error Creating the Link' ) ;
end;

////////////////////////////////////////////////////////////////////////////////
// Tip 10 - actual code which implements creating link.
// - Notes: IUnknown, IShellLink and IPersistFile are documented in
// the ShlObj unit.
//
////////////////////////////////////////////////////////////////////////////////
function CreateLink( AsAppName : String ; AsCmdLine : string ;
AsShortcutName : string ;
AsDescription : string ) : boolean ;
const
ksExplorerKey = 'Software\MicroSoft\Windows\CurrentVersion\Explorer' ;
var
IfUnknown : IUnknown ;
IfShellLnk : IShellLink ;
IfPersistFile : IPersistFile ;
sFileName : String ;
sFilePath : string ;
sLnkExt : string ;
sDirectory : String ;
WsFileName : WideString ;
Reg : TRegIniFile ;
begin
result := true ;

// create a com object
IfUnknown := CreateComObject(CLSID_ShellLink);
// cast the IUnknown interface to a IShellLink
IfShellLnk := IfUnknown as IShellLink;
// cast the IUnknown interface to a IPersistFile
IfPersistFile := IfUnknown as IPersistFile;

sFileName := AsAppName ;
sFilePath := ExtractFilePath( sFileName ) ;

// using the Interface to the Shell link call some of
// it's methods.
with IfShellLnk do
begin
setArguments( PChar(AsCmdLine) ) ;
setPath( PChar(sFileName) ) ;
setWorkingDirectory( PChar(sFilePath) ) ;
// setDescription( PChar(AsDescription) ) ;
end ;

// we need to know where the desktop is located. Although you
// can simply 'hardcode' this. On another users machine it might
// not be the same. If you use profiles, the desktop might be
// located somewhere else... so we'll trust the registry to
// tell us.
Reg := TRegIniFile.Create( ksExplorerKey ) ;
sDirectory := Reg.ReadString('Shell Folders','Desktop','');

// a wide character is required
sLnkExt := ExtractFileExt(AsShortcutName) ;
if ( Uppercase(sLnkExt) = '.LNK' ) then
begin
// assume .lnk included
// need a wide string
WsFileName := sDirectory + '\' +
ExtractFileName(AsShortcutName) ;
// this saves it to the desktop
IfPersistFile.Save(PWChar(WsFileName),False);
end
else
result := false ;

Reg.Free;
end;
GetWay 2000-01-05
  • 打赏
  • 举报
回复
看看李维写的《delphi3 从入门到精通》,正好讲了这个问题,再敲一遍很是麻烦。
DELPHI专题文档-程序应用 更改Windows95的墙纸 类似于VB的doevents功能 DELPHI下的多线程程序设计 用Delphi 3.0编制MP3音乐点歌台 用Delphi开发windows95屏幕保护预览程序 判断一个程序是否dos版本 Delphi自定义消息应用一例 显示密码编辑框的密码 也谈Delphi的日期输入 用修改文件时间的方法来加密文件 在DELPHI处理时间 在Delphi用拼音首字符序列来实现检索功能 用Delphi创建Internet快捷方式Delphi实现远程屏幕抓取 资源文件在DELPHI的使用 在DELPHI应用程序使用DLL 为DELPHI应用程序制作安装程序 用注册表对Delphi程序进行加密 在Delphi程序操作注册表 鼠标和键盘控制 如何为Delphi程序添加事件和事件处理器 在Delphi应用程序拖动控件 用DEPHI为应用软件建立注册机制 用Delphi创建临时文件 Delphi 5快速创建控制面板程序 Delphi经验技巧集锦 Microsoft Agent技术在Delphi的应用 怎样建立简单的任务栏应用程序 判断一个程序是否dos版本 利用Delphi 5调用Excel 97 利用Dll实现通用密码验证框 如何访问一个进程的内存空间 用Delphi 5.0编写OLE程序操纵Excel 用Delphi编写DLL实现动态改变分辨率 在delphi使用flash控件 在Delphi运用QuickReport实现多栏列印 控制INI文件几法 转让控制权 得到执行程序的目录 打开已注册文件 得到Windows用户名和序列号 关闭外部应用程序 查阅可视窗口标题 在Delphi编程创建一个启动闪现窗口 如何用Delphi编ScreenSaver Delphi里如何计算日期 delphi怎样调用外部EXE文件 Win95/98下监控运行的其他程序 控制面板应用大全 避免一个程序二次运行 转换WINDOWS壁纸 改计算机名 为应用程序添加口令 启动屏幕保护 控制热启动 辨别显示分辨率 获得WINDOWS的临时路径 状态条插入可视控件 统计英文字个数 获得Windows类型和版本 读INI文件 大小写金额转换 检测程序是否运行 用Delphi3编写"共享软件" 如何从任务栏上隐藏应用程序的按纽 如何在Delphi程序支持文件拖放 如何运行一个程序直到它结束 用De1phi编制汉字录入能力测试软件 一个实用的Delphi屏幕拷贝程序的设计 如何做一个SYSTRAY程序 查阅可视窗口标题 屏蔽系统功能键 状态条插入可视控件 如何隐藏和显示Windows的任务条 如何将你的程序放在Windows启动 获取当前程序的目录
DELPHI专题文档-程序应用 更改Windows95的墙纸 类似于VB的doevents功能 DELPHI下的多线程程序设计 用Delphi 3.0编制MP3音乐点歌台 用Delphi开发windows95屏幕保护预览程序 判断一个程序是否dos版本 Delphi自定义消息应用一例 显示密码编辑框的密码 也谈Delphi的日期输入 用修改文件时间的方法来加密文件 在DELPHI处理时间 在Delphi用拼音首字符序列来实现检索功能 用Delphi创建Internet快捷方式Delphi实现远程屏幕抓取 资源文件在DELPHI的使用 在DELPHI应用程序使用DLL 为DELPHI应用程序制作安装程序 用注册表对Delphi程序进行加密 在Delphi程序操作注册表 鼠标和键盘控制 如何为Delphi程序添加事件和事件处理器 在Delphi应用程序拖动控件 用DEPHI为应用软件建立注册机制 用Delphi创建临时文件 Delphi 5快速创建控制面板程序 Delphi经验技巧集锦 Microsoft Agent技术在Delphi的应用 怎样建立简单的任务栏应用程序 判断一个程序是否dos版本 利用Delphi 5调用Excel 97 利用Dll实现通用密码验证框 如何访问一个进程的内存空间 用Delphi 5.0编写OLE程序操纵Excel 用Delphi编写DLL实现动态改变分辨率 在delphi使用flash控件 在Delphi运用QuickReport实现多栏列印 控制INI文件几法 转让控制权 得到执行程序的目录 打开已注册文件 得到Windows用户名和序列号 关闭外部应用程序 查阅可视窗口标题 在Delphi编程创建一个启动闪现窗口 如何用Delphi编ScreenSaver Delphi里如何计算日期 delphi怎样调用外部EXE文件 Win95/98下监控运行的其他程序 控制面板应用大全 避免一个程序二次运行 转换WINDOWS壁纸 改计算机名 为应用程序添加口令 启动屏幕保护 控制热启动 辨别显示分辨率 获得WINDOWS的临时路径 状态条插入可视控件 统计英文字个数 获得Windows类型和版本 读INI文件 大小写金额转换 检测程序是否运行 用Delphi3编写"共享软件" 如何从任务栏上隐藏应用程序的按纽 如何在Delphi程序支持文件拖放 如何运行一个程序直到它结束 用De1phi编制汉字录入能力测试软件 一个实用的Delphi屏幕拷贝程序的设计 如何做一个SYSTRAY程序 查阅可视窗口标题 屏蔽系统功能键 状态条插入可视控件 如何隐藏和显示Windows的任务条 如何将你的程序放在Windows启动 获取当前程序的目录

5,386

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 开发及应用
社区管理员
  • VCL组件开发及应用社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧