Cita:
Te dejo mas código que te sirve para lo que pretendes (vas a terminar con mi arsenal:p): Para extraer un mapa de memoria del icono en formato archivo.ico Código:
//------------------------------------------------------------------------------ Código:
//------------------------------------------------------------------------------ |
Lo que pasa es que cuando yo trabajaba con los recursos de mi aplicación usaba “TResourceStream” y “TFileStream” para extraer algo de los recursos a un archivo x, pero creo que esto no se puede usar con recursos ajenos, entonces intento usar “FindResource” y “LoadResource” para cargar los recursos ajenos, y aquí es donde me atoro porque sé que “LoadResource” regresa la dirección de estos recursos, pero como puedo trabajar con este resultado?, lo puedo asignar a un Ticon o algo parecido?.
pd. Gracias por el código escafandra, ya lo estoy estudiando. |
Bueno LoadResource te devuelve un HGLOBAL. No lo he probado, pero seguro que ese puntero es un LPGRPICONDIR. De las funciones que te he dejado, ExtractResIconFromModule te devuelve un puntero tipo LPGRPICONDIR.
No termino de entender lo que quieres hacer :confused: :confused:, pesé que querías guardar en un archivo.ico una imagen de un icono extraído de un resource de dll o exe. Si es así la respuesta esta aquí. Saludos. |
Pues gracias por todo escafandra, ya implemente las funciones que dejaste y tuve que declarar algunas estructuras (y no sé si lo hice correctamente, pero no me funciono hasta que lo hice), no sé si es por esto que “SaveResIconToFile” me devuelve false y no me crea el icono, pero al menos ya tengo con que orientarme y seguirle intentando para extraer los iconos gracias.
Aquí los tipos que declare: Código:
typedef struct |
Si creí que tenias claro de donde salían las definiciones de las estructuras usadas. Yo tengo esto en un archivo que denomino iconos.h:
Código:
#ifndef iconosH Código:
// Necesario para alinear a Word el compilador Prueba como te digo, funciona. Saludos.;) |
Pues estoy de vuelta, solo para agradecer ya que las funciones que dejo escafandra me van de maravilla, y me regresaban falso porque no encontraban el recurso, así que lo único que tuve que hacer es cambiar el Id de tipo int a tipo char, y así sí que jalo. ahora solo le estoy asiendo unas pequeñas modificaciones para que me dé el icono por su posición y no por su nombre (pero eso ya lo hago yo si no, no aprendo).:D:o:D
|
Me alegro de que lo consigas. No te olvides de postear tus soluciones, Siempre servirán a mas gente.
Saludos.;) |
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) Código:
HMODULE hModule=LoadLibrary("C:\\ShowTime.exe"); Código:
FindResource(hModule, |
Bien _cero_. Ya que entraste en el tema de enumeración de los resources, te dejo esto:
Código:
//------------------------------------------------------------------------------ PD: Una aclaración sobre las funciones que dejé anteriormente. El indice para encontrar el icono, como explico es un indice como si de una matriz se tratara. La Función FindResource que usan no es la API sino una nueva que añado en este post. Siento no haberme dado cuanta hasta ahora que no la había proporcionado, por eso no iban bien los índices.:o:p en las funciones posteadas. |
Pues ya quedo, les dejo el código aquí para que lo descarguen, ya que la solución está formada por tres funciones muy extensas y me pareció mejor subir fuentes que escribir todo el código aquí. Nos vemos y gracias por su ayuda, en especial a escafandra.
|
La franja horaria es GMT +2. Ahora son las 14:12:33. |
Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi