您的位置:首页 > 其它

VC创建快捷方式

2014-04-15 15:59 363 查看
 

分类: C、VC/MFC

 

总结主要有二个操作:新建和解析主要用到的是COM组件。IShellLink和IPersistFile需要添加的头函数shobjidl.hIPersistFile主要用到两个成员函数:

 

1、Save。保存内容到文件中去

 

2、Load。读取Load的函数原型

 

HRESULT Load( LPCOLSTR pszFileName, //快捷方式的文件名,应该是ANSI字符

 

                        DWORD dwMode            //读取方式);

 

dwMode可取如下值:

STGM_READ:只读

STGM_WRITE:只写

STGM_READWRITE:读写

 

IShellLink主要成员:

1、GetArguments:获得参数信息

2、GetDescription:获得描述信息(备注行)

3、GetHotkey:获得快捷键

4、GetIconLocation:获得图标

5、GetIDList:获得快捷方式的目标对象的item identifier list (Windows外壳中的每个对象如文件,目录和打印机等都有唯一的item identifiler list)

6、GetPath: 获得快捷方式的目标文件或目录的全路径

7、GetShowCmd:获得快捷方式的运行方式,比如常规窗口,最大化

8、GetWorkingDirectory:获得工作目录

9、Resolve:按照一定的搜索规则试图获得目标对象,即使目标对象已经被删除或移动,重命名下面是对应信息的设置方法

10、SetArguments

11、SetDescription

12、SetHotkey

13、SetIconLocation

14、SetIDList

15、SetPath

16、SetRelativePat

17、SetShowCmd

18、SetWorkingDirectory

 

常见操作:

一、初始化COM接口

二、创建IShellLink对象

三、从IShellLink对象中获取IPersistFile对象接口

四、操作IShellLink对象

五、释放IPersistFile对象接口

六、释放IShellLink对象

七、释放COM接口示例代码:

 

实例代码:

[cpp] view
plaincopyprint?

//////////////////////////////////////////////////////////////////////////  

//  在桌面上创建快捷方式  

  

#include <shlobj.h>  

#include <atlbase.h>  

  

int main()  

{  

    HRESULT     hRet;  

    IShellLink  *pLink;  

      

    //IShellLink对象指针  

    IPersistFile * ppf;   

      

    //IPersisFil对象指针  

    WCHAR wsz[MAX_PATH];  

      

    //定义Unicode字符串  

    //初始化COM库  

    hRet = ::CoInitialize(NULL);  

    if ( hRet != S_OK)  

    {  

        //初始化COM库失败,直接返回  

        AfxMessageBox("初始化COM库失败");   

        return;  

    }  

      

    //创建IShellLink实例  

    hRet = ::CoCreateInstance(CLSID_ShellLink,  

                          NULL,  

                          CLSCTX_INPROC_SERVER,  

                          IID_IShellLink,  

                          (void**)&pLink);  

    if(hRet != S_OK)  

    {  

        AfxMessageBox("创建IShellLink实例失败");  

    }  

    else  

    {  

        //创建IShellLink实例成功,继续操作  

        //从IShellLink对象中获取IPersistFile接口  

        hRet = pLink->QueryInterface(IID_IpersistFile,(void**)&ppf);  

        if(hRet != S_OK)  

        {  

            AfxMessageBox("获取IPersistFile接口失败");  

        }  

        else  

        {  

            //获取接口成功,继续操作  

            //设置快捷方式中的程序路径  

            pLink->SetPath("c://aa.exe");  

              

            //设置快捷方式的工作目录  

            pLink->SetWorkingDirectory("c://");  

              

            //确保快捷方式路径由ANSI字符串组成  

            LPCSTR  lpstr;  

            lpstr = "C://Documents and Settings//hjs//桌面//vc创建的快捷方式.lnk";  

            MultiByteToWideChar( CP_ACP, 0,lpstr, -1, wsz, MAX_PATH);  

              

            //保存快捷方式  

            ppf->Save(wsz,TRUE);  

        }  

    }  

      

    //释放IPersistFile接口  

    ppf->Release();  

      

    //释放IShellLink对象  

    pLink->Release();  

      

    //释放COM接口  

    ::CoUninitialize();  

    return 0;  

}  

 

 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: