Login dark

title: 添加一个快捷方式
author: Love02xp
date: 2018-08-02 07:23:22
category: [编程代码]
tags: [VC6,编程]
draft: false
cover:
preview:



##### [阅读原文]()

HRESULT CreateLink(LPCSTR lpszPathObj,

    LPCSTR   lpszPathLink,   LPCSTR   lpszDesc)   

{

    HRESULT   hres;   
    IShellLink*   psl;   

    //   Get   a   pointer   to   the   IShellLink   interface.   
    hres   =   CoCreateInstance(CLSID_ShellLink,   NULL,   
            CLSCTX_INPROC_SERVER,   IID_IShellLink,   (LPVOID   *)   &psl);   
    if   (SUCCEEDED(hres))   {   
            IPersistFile*   ppf;   

            //   Set   the   path   to   the   shortcut   target   and   add   the   
            //   description.   
            psl-> SetPath(lpszPathObj);   
            psl-> SetDescription(lpszDesc);   

          //   Query   IShellLink   for   the   IPersistFile   interface   for   saving   the   
          //   shortcut   in   persistent   storage.   
            hres   =   psl-> QueryInterface(&IID_IPersistFile,   
                    (LPVOID*)&ppf);   

            if   (SUCCEEDED(hres))   {   
                    WCHAR   wsz[MAX_PATH];   

                    //   Ensure   that   the   string   is   Unicode.   
                    MultiByteToWideChar(CP_ACP,   0,   lpszPathLink,   -1,   
                            wsz,   MAX_PATH);   

                    //   Save   the   link   by   calling   IPersistFile::Save.   
                    hres   =   ppf-> Save(wsz,   TRUE);   
                    ppf-> Release();   
            }   
            psl-> Release();   
    }   
    return   hres;   

}


<!--more-->







=========================================================






// CreateLink - uses the Shell 's IShellLink and IPersistFile interfaces
// to create and store a shortcut to the specified object.
// Returns the result of calling the member functions of the interfaces.
// lpszPathObj - address of a buffer containing the path of the object.
// lpszPathLink - address of a buffer containing the path where the
// Shell link is to be stored.
// lpszDesc - address of a buffer containing the description of the
// Shell link.

HRESULT CreateLink(LPCSTR lpszPathObj,

    LPCSTR   lpszPathLink,   LPCSTR   lpszDesc)   

{

    HRESULT   hres;   
    IShellLink*   psl;   

    //   Get   a   pointer   to   the   IShellLink   interface.   
    hres   =   CoCreateInstance(CLSID_ShellLink,   NULL,   
            CLSCTX_INPROC_SERVER,   IID_IShellLink,   (LPVOID   *)   &psl);   
    if   (SUCCEEDED(hres))   {   
            IPersistFile*   ppf;   

            //   Set   the   path   to   the   shortcut   target   and   add   the   
            //   description.   
            psl-> SetPath(lpszPathObj);   
            psl-> SetDescription(lpszDesc);   

          //   Query   IShellLink   for   the   IPersistFile   interface   for   saving   the   
          //   shortcut   in   persistent   storage.   
            hres   =   psl-> QueryInterface(&IID_IPersistFile,   
                    (LPVOID*)&ppf);   

            if   (SUCCEEDED(hres))   {   
                    WCHAR   wsz[MAX_PATH];   

                    //   Ensure   that   the   string   is   Unicode.   
                    MultiByteToWideChar(CP_ACP,   0,   lpszPathLink,   -1,   
                            wsz,   MAX_PATH);   

                    //   Save   the   link   by   calling   IPersistFile::Save.   
                    hres   =   ppf-> Save(wsz,   TRUE);   
                    ppf-> Release();   
            }   
            psl-> Release();   
    }   
    return   hres;   

}