注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

TERONY的博客

Still Achieving.

 
 
 

日志

 
 

Delphi2009中获取快捷方式信息的新方法  

2009-05-19 21:51:15|  分类: Profession |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

之所以采用新的方法实属无奈,旧有项目中获取快捷方式信息(目标、快捷键、起始位置等)的实现方式出现问题——获取到的目标路径全是乱码。我想这又是Unicode的问题。这是为什么呢?:-P

现在说下新的方法:

首先,uses  ShlObj, ActiveX, ComObj;

 然后,声明快捷方式结构

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;

最后实现

procedure TfrmMain.GetLinkFileInfo(LnkName: String; var LnkInfo: LINK_FILE_INFO);
var
  aObj:   IUnknown;
  MyPFile:   IPersistFile;
  MyLink:   IShellLink;
  WFileName:   WideString;
  pfd:WIN32_FIND_DATA;
begin
  aObj := CreateComObject(CLSID_ShellLink);
  MyPFile := aObj as IPersistFile;
  MyLink := aObj as IShellLink;

  WFileName := LnkName;  

  MyPFile.Load(PWideChar(WFileName),   0);

  MyLink.GetPath(LnkInfo.FileName, MAX_PATH, pfd, SLGP_UNCPRIORITY);
  MyLink.GetWorkingDirectory(LnkInfo.WorkDirectory, MAX_PATH);
  MyLink.GetArguments(LnkInfo.Arguments, MAX_PATH);
end;

以上代码是如何获取快捷方式的相关信息,至于如何设置快捷方式信息,我想你已经会了。:-)

  评论这张
 
阅读(173)| 评论(0)
推荐 转载

历史上的今天

在LOFTER的更多文章

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017