Club Delphi  
    Paypal   FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Gráficos
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

 
 
Herramientas Buscar en Tema Desplegado
  #27  
Antiguo 21-12-2008
_cero_ _cero_ is offline
Miembro
 
Registrado: abr 2007
Posts: 147
Poder: 20
_cero_ Va por buen camino
Thumbs up

Pues regreso para reportar mis avances y dejarles esta nueva función, en parte basada en las funciones que nos proporciono amablemente escafandra, solo que esta recorre todos los recursos del tipo icono y con un contador(numme), que es el que se encarga de identificar el icono que deseo extraer.
Código:
bool CALLBACK ResNameProc(HANDLE hModule, LPCTSTR lpType,LPTSTR lpszName,LONG lpName)
{
  if (numme==0) {
    HRSRC hRsrc = FindResource( hModule, MAKEINTRESOURCE(lpszName), lpType );
    HGLOBAL hGroup = LoadResource( hModule, hRsrc );
    GRPICONDIR * lpGrpIconDir = (LPGRPICONDIR)LockResource( hGroup );
    for( int i=0; i < lpGrpIconDir->idCount; ++i ) {
      int x = (i%7)*64;
      int y = (i/8)*64;
      GRPICONDIRENTRY * e = &lpGrpIconDir->idEntries[i];
      hRsrc = FindResource( hModule, MAKEINTRESOURCE( e->nID ), RT_ICON );
      HGLOBAL hGlobal = LoadResource( hModule, hRsrc );
      ICONIMAGE *lpIconImage = (LPICONIMAGE)LockResource( hGlobal );
      HICON hicon = CreateIconFromResourceEx(
        (PBYTE)lpIconImage,
        e->dwBytesInRes,
        TRUE,
        0x00030000,//DWORD dwVersion,
        e->bWidth,
        e->bHeight,
        0
      );
      TIcon *icon = new TIcon;
      icon->Handle = hicon;
      if (icon->Width==256) {
        lolol++; icon->SaveToFile("C:\\ico"+String(numme)+".ico");
      }
    };
  }
  return true;
}
Y se manda a llamar así
Código:
HMODULE hModule=LoadLibrary("C:\\ShowTime.exe");

EnumResourceNames(hModule,RT_GROUP_ICON,(ENUMRESNAMEPROC)ResNameProc,0);
  

FreeLibrary(hModule);
Como ven es muy similar a “EnumProcesses” lo que me facilito mas comprenderla, aunque en lo personal me gustaban mas las otras funciones solo que nunca pude extraer el icono según su posición, porque simplemente no me encontraba el icono o me marcaba que tenia mas imágenes de las que en realidad tenia. pero por si les sirve, para buscar por índice de recursos con “FindResource” solo se pone así

Código:
FindResource(hModule, 

"#1", //  1=posición en recursos (índice)
RT_ICON);
Bueno subiré la función completa(cuando la termine al 100), para extraer iconos de extensiones en alta resolución.

Última edición por _cero_ fecha: 21-12-2008 a las 06:21:01.
Responder Con Cita
 


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
try-except - grandes problemas pmfras Conexión con bases de datos 1 12-06-2007 02:53:33
Obtener iconos para mejorar aspectos zugazua2001 Varios 2 05-08-2006 19:43:45
Grandes frases de grandes personas Nuria Humor 7 18-04-2004 05:40:17
tablas grandes Giniromero Firebird e Interbase 4 14-04-2004 18:18:48


La franja horaria es GMT +2. Ahora son las 06:09:36.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi