转至繁体中文版     | 网站首页 | 图文教程 | 资源下载 | 站长博客 | 图片素材 | 武汉seo | 武汉网站优化 | 
最新公告:     敏韬网|教学资源学习资料永久免费分享站!  [mintao  2008年9月2日]        
您现在的位置: 学习笔记 >> 图文教程 >> 软件开发 >> Delphi程序 >> 正文
在Delphi中操作快捷方式         ★★★★

在Delphi中操作快捷方式

作者:闵涛 文章来源:闵涛的学习笔记 点击数:2174 更新时间:2009/4/23 18:26:10

   在Delphi中操作快捷方式

  快捷方式减少了系统的重复文件,是快速启动程序或打开文件或文件夹的方法,快捷方式对经常使用的程序、文件和文件夹非常有用。在Windows系统中,充斥着大量的快捷方式,那么如何操作这些快捷方式就是一个很头疼的问题,在Windows的编程中,无疑会经常碰到操作快捷方式文件的问题,例如为程序创建快捷方式,修改程序的快捷方式等等。为了操作快捷方式,本人封装了两个函数,而且给出了一个详细的例子。

 

1.         快捷方式文件的基本信息

  快捷方式包含的信息有:目标文件名、程序运行时的参数、快捷键、运行窗口的状态、描述、工作目录(起始位置)、图标文件名和图标索引等等。我们在操作快捷方式时,就要考虑到这些信息。

2.         数据结构

  为了方便快捷地进行操作,有必要定义一个数据结构,以便在函数调用时传递必要的信息:

const

CCH_MAXNAME=255;              //描述的缓冲区的大小

LNK_RUN_MIN=7;                 //运行时最小化

LNK_RUN_MAX=3;                //运行是最大化

LNK_RUN_NORMAL=1;            //正常窗口

type LINK_FILE_INFO=record

         FileName:array[0..MAX_PATH] of char;              //目标文件名

         WorkDirectory:array[0..MAX_PATH] of char;          //工作目录或者起始目录

         IconLocation:array[0..MAX_PATH] of char;           //图标文件名

         IconIndex:integer;                                //图标索引

         Arguments:array[0..MAX_PATH] of char;             //程序运行的参数

         Description:array[0..CCH_MAXNAME] of char;       //快捷方式的描述

         ItemIDList:PItemIDList;                           //只供读取使用

         RelativePath:array[0..255] of char;                   //相对目录,只能设置

         ShowState:integer;                               //运行时的窗口状态

         HotKey:word;                                   //快捷键

     end;

3.         函数

  1)取得快捷方式或者修改信息函数LinkFileInfo

要注意的是,需要在Uses部分添加comobj,activex,shlobj这三个单元,但是在本文例子中因为要转化热键为文本和使用Windows的API ShellExecute,所以还要添加Menus 和ShellApi单元。同时对异常处理不够完美,在使用时大家可以根据实际情况进行修改。

说明:函数有三个参数,其中第一个参数为要进行处理的快捷方式的文件名,第二个为LINK_FILE_INFO的结构,用于接收信息或者输入信息对快捷方式进行修改,第三个参数表明是读取快捷方式的信息还是设置快捷方式的信息。函数成功时返回true,否则为false。

原型:

function LinkFileInfo(const lnkFileName:string;var info:LINK_FILE_INFO;const bSet:boolean):boolean;

var

 hr:hresult;

 psl:IShelllink;

 wfd:win32_find_data;

 ppf:IPersistFile;

 lpw:pwidechar;

 buf:pwidechar;

begin

 result:=false;

 getmem(buf,MAX_PATH);

 try

 if SUCCEEDED(CoInitialize(nil)) then

 if (succeeded(cocreateinstance(clsid_shelllink,nil,clsctx_inproc_server,IID_IShellLinkA,psl))) then

 begin

   hr:=psl.QueryInterface(iPersistFile,ppf);

   if succeeded(hr) then

   begin

     lpw:=stringtowidechar(lnkfilename,buf,MAX_PATH);

     hr := ppf.Load(lpw, STGM_READ);

     if succeeded(hr) then

     begin

       hr := psl.Resolve(0, SLR_NO_UI);

       if succeeded(hr) then

       begin

         if bSet then

         begin

           psl.SetArguments(info.Arguments);

           psl.SetDescription(info.Description);

           psl.SetHotkey(info.HotKey);

           psl.SetIconLocation(info.IconLocation,info.IconIndex);

           psl.SetIDList(info.ItemIDList);

           psl.SetPath(info.FileName);

           psl.SetShowCmd(info.ShowState);

        &nb

[1] [2] [3]  下一页


没有相关教程
教程录入:mintao    责任编辑:mintao 
  • 上一篇教程:

  • 下一篇教程:
  • 【字体: 】【发表评论】【加入收藏】【告诉好友】【打印此文】【关闭窗口
      注:本站部分文章源于互联网,版权归原作者所有!如有侵权,请原作者与本站联系,本站将立即删除! 本站文章除特别注明外均可转载,但需注明出处! [MinTao学以致用网]
      网友评论:(只显示最新10条。评论内容只代表网友观点,与本站立场无关!)

    同类栏目
    · C语言系列  · VB.NET程序
    · JAVA开发  · Delphi程序
    · 脚本语言
    更多内容
    热门推荐 更多内容
  • 没有教程
  • 赞助链接
    更多内容
    闵涛博文 更多关于武汉SEO的内容
    500 - 内部服务器错误。

    500 - 内部服务器错误。

    您查找的资源存在问题,因而无法显示。

    | 设为首页 |加入收藏 | 联系站长 | 友情链接 | 版权申明 | 广告服务
    MinTao学以致用网

    Copyright @ 2007-2012 敏韬网(敏而好学,文韬武略--MinTao.Net)(学习笔记) Inc All Rights Reserved.
    闵涛 投放广告、内容合作请Q我! E_mail:admin@mintao.net(欢迎提供学习资源)

    站长:MinTao ICP备案号:鄂ICP备11006601号-18

    闵涛站盟:医药大全-武穴网A打造BCD……
    咸宁网络警察报警平台