首页 Soft PlugIn RAN乱 Dev开发 Info资料 English WAP 留言 登陆 注册
-
Posted by Yippee | 评论(1) | 引用(0) | 阅读2265次
让你的软件增加安装功能2快捷方式

三、创建程序的快捷方式
1、创建快捷方式http://www.shengfang.org

在VC中,微软已经http://www.shengfang.org提供了这方面的COM接口:IshellLink,该类提供了对快捷方式的创建、修改等函数,我们需要引用该接口,进行自己需要的操作。

BOOL    CreateLink(LPCSTR pszFile, LPCSTR pszLink)
PszFile:程序路径,例如“D:\PWIN98\ EXPLORER.EXE”;

pszLink:http://www.shengfang.org快捷方式路径,如果我们在DOS查看快捷方式,就可以发现它其实是一个  后缀名为“LNK”的文件,例如“C:\EXPLORER.LNK”。

现在说明函数主体:

{
  CoInitialize(NULL);//初始化COM接口
    HRESULT http://www.shengfang.org hres;
  IShellLink *psl; /http://www.shengfang.org /定义一个ISHELLLINK对象
  hres =http://www.shengfang.org CoCreateInstance (CLSID_ShellLink, NULL, CLSCTX_INPROC_SERVER,
    IID_IShellLink, (void **)&psl); //创建实例
    if (!SUCCEEDED (hres))//如果创建失败,返回
       return FALSE;http://www.shengfang.org
    IPersistFile *ppf;// 定义IpersistFile对象,用来保存ISHELLLINK对象 
    hres = psl->QueryInterface(IID_IPersistFile, (void **)&ppf);
     //从ISHELLLINK对象中获得IpersistFile对象的接口。
    if (!SUCCEEDED (hres))
{
    psl->Release ();//释放ISHELLLINK对象
    return FALSE;
}
hres = psl->SetPath (pszFile);
//使用ISHELLLINK的SETPATH方法设置快捷方式中的程序路径
WORD wsz [MAX_PATH]; // 定义Unicode字符串
MultiByteToWideChar (CP_ACP, 0, pszLink, -1, wsz, MAX_PATH);
  // 确保快捷方式路径由ANSI字符组成
  hres = ppf->Save (wsz, TRUE);  //保存快捷方式
    ppf->Release ();//释放IpersistFile对象
    psl->Release ();//释放ISHELLLINK对象
    return TRUE;
}
以上就是一个比较简单创建快捷方式的函数,更多细节请参考MSDN中的说明。

2、获得各种系统目录

只是能够创建快捷http://www.shengfang.org方式是不够的,我们还要将快捷方式创建到我们指定的位置当中,例如开始菜单、桌面以及IE快速启动栏,甚至启动程序组中。   

为了获得这些特殊目录,我们必须使用SHGetSpecialFolderLocation函数,该函数需要三个参数:

HWND hwndOwner, http://www.shengfang.org母窗口的句柄;int nFolder, 指定的特殊目录;

LPITEMIDLIST *ppidl   
以下是代码示例:

    LPITEMIDLIST ppidl;    //定义IDLIST指针
    charlinkpath[255];   //定义字符串,保存目录名
        获得桌面路径:

    SHGetSpecialFolderLocation(NULL,0 ,&ppidl);
    SHGetPathFromIDList(ppidl,linkpath);
        获得程序组路径

    SHGetSpecialFolderLocation(NULL,CSIDL_PROGRAMS ,&ppidl);
    SHGetPathFromIDList(ppidl,linkpath);
        获得启动程序项路径

    SHGetSpecialFolderLocation(NULL,CSIDL_STARTUP  ,&ppidl);
    SHGetPathFromIDList(ppidl,linkpath);
        获得IE快速启动栏路径

    SHGetSpecialFolderLocation(NULL,CSIDL_APPDATA   ,&ppidl);
    SHGetPathFromIDList(ppidl,linkpath);
    strcat(linkpath,"\Microsoft\Internet Explorer\Quick Launch");
如果我们改变SHGetSpecialFolderLocation函数中的nFolder参数,就可以获得不同的特殊目录,更多的信息请查看MSDN帮助。

以上代码在VC6,WIN98以及WIN2K下测试通过,至于其他的细节,例如设置标志,我们可以通过INI文件或者注册表进行,http://www.shengfang.org基本我们就可以实现一个简单的安装功能了。


字体:

Permanant URI永久地址 http://www.shengfang.org/blog/p/softaddsetup2.php
Trackback URI引用地址 http://www.shengfang.org/blog/tb.php?tb_id=1110864419

2005年3月15日13:26星期二  [Dev开发] 追踪此文的RSS
Tian Ya在 2007年6月30日01:39星期六 评论:
Emotion

称呼:    登陆   注册
   不注册,但记住我的信息
邮件:
(非必须)
评论: [UBB代码帮助]
粗体 斜体 下划线 链接 水平线 引用



验证码: 请输入你看见的数字
关闭UBB      提交时自动将内容复制到剪贴板

公告
Fire and Motion!

统计信息
[Yippee]||[统计]||日志:1790
在线: 8||用户: 2563 [列表]
今日:690||到访:2682329
Rss:841978||评论:1585

最新日志

最新评论

友情链接

日历

最新引用

搜索

归档

杂项
Get RSS Feed (Version 2.0)
Get Atom Feed (Version 0.3)
编码:  UTF-8