零贰'Blog

零贰'Blog - 记录日常点点滴滴..........

添加一个快捷方式

VC6编程VC6
[阅读原文]()
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;   
}   

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


//   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;   
}