Cómo cambiar el icono de un acceso directo A IShellLink

Seleccione idioma Seleccione idioma
Id. de artículo: 179904 - Ver los productos a los que se aplica este artículo
Expandir todo | Contraer todo

En esta página

Resumen

En este artículo se describe cómo crear un acceso directo y cambiar el icono que se muestra para el acceso directo.

Más información

IShellLink proporciona métodos para obtener y establecer el icono de un acceso directo. Los pasos para cambiar el icono de un acceso directo son como sigue:
  1. Obtener la interfaz IPersistFile desde el IShellLink con QueryInterface IID_IPersistFile.
  2. Llamar a IShellLink::SetIconLocation con el archivo que contiene el icono (en este caso, el archivo es un archivo .dll o .exe) y el índice del icono.
  3. Llame a IPersistFile::Save para actualizar el acceso directo.

Código de ejemplo

Código de ejemplo siguiente crea un acceso directo y establece icono del acceso directo en un icono contenido en shell32.dll:
   /*PARAMETERS
   fname_to_create_link  = (e.g.) "c:\\mytextfile.txt"
   lnk_fname = (e.g.) "yourname.lnk"
   */ 

   void CreateLinkThenChangeIcon(LPTSTR fname_to_create_link,
                                 LPTSTR lnk_fname)
   {
   HRESULT hres;
   IShellLink *psl = NULL;
   IPersistFile *pPf = NULL;
   WORD wsz[256];
   TCHAR buf[256];
   int id;
   LPITEMIDLIST pidl;

   hres = CoCreateInstance(  CLSID_ShellLink,

                           NULL,
                           CLSCTX_INPROC_SERVER,
                           IID_IShellLink,
                           (LPVOID*)&psl);
   if(FAILED(hres))
      goto cleanup;
   hres = psl->QueryInterface(IID_IPersistFile, (LPVOID*)&pPf);
   if(FAILED(hres))
      goto cleanup;
   hres = psl->SetPath(fname_to_create_link);
   if(FAILED(hres))

      goto cleanup;
   //place the shortcut on the desktop
   SHGetSpecialFolderLocation(hwnd, CSIDL_DESKTOP, >pidl);

   SHGetPathFromIDList(pidl, buf);

   lstrcat(buf,"\\");
   lstrcat(buf,lnk_fname);

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

   hres = pPf->Save(wsz, TRUE);

   if(FAILED(hres))

      goto cleanup;

   GetSystemDirectory(buf, 256);

   lstrcat(buf,"\\shell32.dll");

   hres = psl->SetIconLocation(buf, 1);

   if(FAILED(hres))

      goto cleanup;

   hres = psl->GetIconLocation(buf, 256, &id);

   if(FAILED(hres))

      goto cleanup;

   pPf-&Save(wsz, TRUE);

   cleanup:

   if(pPf)

      pPf->Release();

   if(psl)

      psl->Release();

   }
				

Propiedades

Id. de artículo: 179904 - Última revisión: lunes, 11 de julio de 2005 - Versión: 1.3
La información de este artículo se refiere a:
  • Microsoft Platform Software Development Kit-January 2000 Edition
Palabras clave: 
kbmt kbhowto KB179904 KbMtes
Traducción automática
IMPORTANTE: Este artículo ha sido traducido por un software de traducción automática de Microsoft (http://support.microsoft.com/gp/mtdetails) en lugar de un traductor humano. Microsoft le ofrece artículos traducidos por un traductor humano y artículos traducidos automáticamente para que tenga acceso en su propio idioma a todos los artículos de nuestra base de conocimientos (Knowledge Base). Sin embargo, los artículos traducidos automáticamente pueden contener errores en el vocabulario, la sintaxis o la gramática, como los que un extranjero podría cometer al hablar el idioma. Microsoft no se hace responsable de cualquier imprecisión, error o daño ocasionado por una mala traducción del contenido o como consecuencia de su utilización por nuestros clientes. Microsoft suele actualizar el software de traducción frecuentemente.
Haga clic aquí para ver el artículo original (en inglés): 179904

Enviar comentarios

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com