Delphi编程实现程序快捷方式

时间:2010-03-05 18:49:56  来源:第二电脑网  作者:第二电脑网

  第二电脑网导读:我就和大家来讨论一下关于快捷方式编程实现的原理,并给大家一个具体的示例程序。一、 编程原理1、首先找到快捷方式的存放位置,创建程序组。在Windows系统下,所谓的程序组就是文件夹,只是这些文件夹的存放位置比较特殊罢了,一般存放在“D:Documents and SettingsAll Users.WINNT「开始」菜单程序”文件夹(在Windows2000下),你可以打开这个文件夹,是不是可...
  正文:Windows系统提供了快捷方式来简化用户对应用程序的执行,尽量使得用户不与应用程序的具体位置挂上关系,大大方便了用户的操作。所以,在Windows系统下,大多安装程序一般都提供创建程序组和快捷方式。但,你有没有想过,快捷方式是如何实现的呢?
下面,我就和大家来讨论一下关于快捷方式编程实现的原理,并给大家一个具体的示例程序。

一、 编程原理
1、首先找到快捷方式的存放位置,创建程序组。
在Windows系统下,所谓的程序组就是文件夹,只是这些文件夹的存放位置比较特殊罢了,一般存放在“D:Documents and SettingsAll Users.WINNT「开始」菜单程序”文件夹(在Windows2000下),你可以打开这个文件夹,是不是可以看到那些以前只能在“开始-程序”中才能看到的项目?!所以,必须首先得到快捷方式的存放位置,要解决这个问题,可以有两种解决方法。
第一、通过Windows2000下的一个API函数来实现:


HRESULT SHGetSpecialFolderLocation(
HWND hwndOwner,
int nFolder,
LPITEMIDLIST *ppidl
);

第二、通过注册表来实现,打开注册表,然后依次打开“HKEY_CURRENT_USERSoftwareMicrosoftWindows
CurrentVersionExplorerShell Folders”,可以找到比如“开始菜单”、“程序”等文件夹的存放位置。
明白了程序组就是文件夹,要建立程序组就非常简单了,只要在找到的“程序”这个文件夹的位置中创建一个以“程序组”命名的文件夹就可以了。比如,我们把找到的“程序”所在的文件夹存放在Directory中,而程序组的名称保存在GroupName中,下面的代码可以实现在“程序”文件夹中创建“程序组”:


Directory := Reg.ReadString('Programs');
SubDir:= Directory+''+GroupName;
CreateDir(SubDir);

一般的应用程序都会通过API函数来实现,在本例中,我们通过第二种方法来实现。
2、创建快捷方式
解决了前面的两个小问题,我们再来看如何具体实现快捷方式的创建。如果你经常编写程序,可能会想到利用API函数来实现,不幸的是,你在API函数中找不到创建快捷方式的相应函数,因为这个功能需要用COM来实现。一些人可能会对COM编程感到陌生与恐惧,实际上,COM编程并不复杂,你不需要太了解COM就可以很好地使用它。
Windows提供了一个COM接口IshellLink,它能够帮助我们创建、修改、删除快捷方式。要使用COM接口提供的功能,必须首先调用CreateCOMObject函数创建一个接口的实例,Delphi提供了创建COM的一个基类Iunknown,具体的示例程序如下:


var
MyObject : IUnknown; file://IUnknown是COM的基类
  MySLink : IShellLink;  file://用于创建快捷方式的对象
MyObject := CreateCOMObject(CLSID_ShellLink);
MySLink := MyObject as IShellLink;

创建实例后,通过调用SetPath()方法设置快捷方式指向的源程序的路径,快捷方式的存储位置应该是:“程序”的位置+程序组名称+快捷方式名称+扩展名.lnk;通过SetDescription()方法设置快捷方式的描述,当然你还可以调用比如SetHotKey()等方法设置热键、显示的图标(默认为实际程序的图标)等。实际上这个接口功能远不止这些,限于篇幅,直接略过。
设置完成的快捷方式并没有保存到磁盘上,还必须通过IpersistFile对象的Save()方法来实现。如下面的代码:


MyPFIle := MyObject as IPersistFile;
MyPFile.Save(PWChar(WFileName),True);

需要注意的是:快捷方式应该使用Unicode存储,所以必须调用PWChar()函数将其转换。

二、编程示例
下面,让我们用Delphi6来编程实现一个简单的示例程序。程序的功能如下:你可以在窗口的三个文本框中输入源程序的位置(也可以通过浏览按钮来实现)、程序组名称和快捷方式名称,通过下拉框来选择快捷方式的存放位置,单击“创建”按钮可以创建程序组和快捷方式了。是不是很酷?心动不如行动,让我们一步一步来实现。 《Delphi编程实现程序快捷方式》由第二电脑网原创提供,转载请注明:http://www.002pc.com/master/College/Language/Delphi/13078.html

 1/4    1 2 3 4 下一页 尾页


关键字:

关于《Delphi编程实现程序快捷方式》文章的评论

站内搜索: 高级搜索

热门搜索: Windows style 系统 tr IP QQ CPU 安装 function 注册 if td