Windows Mobile 快捷方式的读取和创建

来源:互联网 发布:python urllib.open 编辑:程序博客网 时间:2024/05/17 01:27

 

一、快捷方式的获取
SHGetShortcutTarget

功能:

获取快捷方式的目标路径

原型:

BOOL SHGetShortcutTarget(

  LPTSTR szShortcut,

  LPTSTR szTarget,

  int cbMax

);

参数:

szShortcut :包含快捷方式名字的字符串

szTarget :包含快捷方式目标路径的字符串, 字符串的大小至少是cbMax。

cbMax :将被拷贝到缓存szTarget的最大字符串

返回值:

成功返回TRUE,否则返回FALSE。

示例代码:

TCHAR StartMenuFilePath[MAX_PATH];
::SHGetSpecialFolderPath(NULL, StartMenuFilePath, CSIDL_PROGRAMS, FALSE);
TCHAR szShortPath[MAX_PATH];
wsprintf(szShortPath, _T("%s//%s"), StartMenuFilePath, _T("搜索.lnk"));
TCHAR szFilePath[MAX_PATH];
:SHGetShortcutTarget(szShortPath, szFilePath, sizeof(szFilePath));

执行完毕后,
szFilePath 的值为shfind.exe

二、快捷方式的创建
SHCreateShortcut

功能:

创建快捷方式。

原型:

DWORD WINAPI SHCreateShortcut(

  LPTSTR szShortcut,

  LPTSTR szTarget

);

参数:

szShortcut :包含快捷方式名字和路径的字符串。在路径指定的位置创建快捷方式。

szTarget: 包含快捷方式目标路径和参数的字符串。大小限定在256个字符以内。

返回值:

成功返回TRUE,否则返回FALSE。如果指定的快捷方式已经存在的话将返回FALSE。

示例代码:

SHCreateShortcut(_T("//搜索.lnk"), _T("shfind.exe"));
执行结果为在根目录下创建了“搜索.lnk”这个快捷方式文件。

三、补充说明
这里主要针对获取快捷方式的内容进行几点说明:

我们获取快捷方式的时候,内容不一定只包含路径,有可能存在一下的情况,如:

1、路径后跟随名称

/Windows/“开始”菜单/程序/任务.lnk

2、缩写名

poutlook.exe tasks

/Windows/“开始”菜单/程序/ActiveSync.lnk

:MSSYNCAPP

3、路径后跟随数字

/Windows/“开始”菜单/程序/游戏/icon.lnk

shellres.dll,-8229

考虑以上这几种情况,我们在获取快捷方式路径时,需要对路径做一些特殊处理。这里重点说一下第二种情况,这个缩写代表什么意思?在网上搜索了一下,原来我们可以在[HKEY_LOCAL_MACHINE/Software/Microsoft/Shell/Rai/]键值下找到名为:MSSYNCAPP的子键,键值为1的子键数值指明了名为:MSSYNCAPP的程序名称。但我们从这里获得的值,有时也不是路径,还会再次出现上述三种情况。所以,如果我们想从快捷方式中获取路径的话,就需要留意一些了。