Problema al Reemplazar archivo de recursos con APIs UpdateResource, etc

Iniciado por EddyW, 3 Marzo 2010, 02:35 AM

0 Miembros y 1 Visitante están viendo este tema.

EddyW

Bien, pues llevo usando el mismo code (Mio) para añadir archivos de recursos (nuevos) a los ejecutable, y me funciona bien, pero es la primera vez que intento reemplazar uno y sale mal..

Este es el code:
Código (vb) [Seleccionar]
Private Declare Function BeginUpdateResource Lib "kernel32" Alias "BeginUpdateResourceA" (ByVal pFileName As String, ByVal bDeleteExistingResources As Long) As Long
Private Declare Function UpdateResource Lib "kernel32" Alias "UpdateResourceA" (ByVal hUpdate As Long, ByVal lpType As String, ByVal lpName As String, ByVal wLanguage As Long, lpData As Any, ByVal cbData As Long) As Long
Private Declare Function EndUpdateResource Lib "kernel32" Alias "EndUpdateResourceA" (ByVal hUpdate As Long, ByVal fDiscard As Long) As Long

Private Sub Form_Load()
Dim Beg As Long, Mes As String
Mes = "String Nuevo"
Beg = BeginUpdateResource("C:\EjecutablePrueba.exe", False)
Call UpdateResource(Beg, "String Table", 7, 3082, ByVal StrPtr(Mes), LenB(Mes) + 2)
Call EndUpdateResource(Beg, 0)
End Sub


Bueno todo bien pero como rayos hago para que se reemplaze..  :P
Viendo con un editor de recursos tengo 2 "String Table", el primero es el original, el segundo es el que yo puse pero sale asi:

STRINGTABLE
LANGUAGE LANG_SPANISH, 0x3
{
9232, "String Nuevo"
}

Lo que no entiendo es como reemplazar el recurso y que no salgan 2 y como colocar un ID que yo quiera, predeterminadamente 101..

Alguna info, o ayuda.. plis

SaluDOS!!! y agradezco cualquier ayuda.

BlackZeroX

#1
sustituye:

Beg = BeginUpdateResource("C:\EjecutablePrueba.exe", False)

por

Beg = BeginUpdateResource("C:\EjecutablePrueba.exe", true)

P.D.: Perdon pero no me aguanto.

Cita de: 3D1 en  3 Marzo 2010, 02:35 AM
Bien, pues llevo usando el mismo code (Mio)

No importa si es de Chana Sutana o Mengana esto yo también lo uso, y cientos mas =.

Infierno Lunar!¡.
The Dark Shadow is my passion.

EddyW

Cita de: BlackZeroX▓▓▒▒░░ en  3 Marzo 2010, 02:47 AM
sustituye:

Beg = BeginUpdateResource("C:\EjecutablePrueba.exe", False)

por

Beg = BeginUpdateResource("C:\EjecutablePrueba.exe", true)

P.D.: Perdon pero no me aguanto.

Cita de: 3D1 en  3 Marzo 2010, 02:35 AM
Bien, pues llevo usando el mismo code (Mio)

No importa si es de Chana Sutana o Mengana esto yo también lo uso, y cientos mas =.

Infierno Lunar!¡.

Con True, se borran todos los recursos y se crea uno nuevo, al menos eso me pasa..

Como cambio el ID??

SaluDOS!!! y gracias por la respuesta.

LeandroA

Hola "Creo" que es por el lenguage ose el cuarto parametro de la funcion UpdateResourceA

Saludos.

EddyW

No, eso pensé también pero el lenguaje esta bien..

Con ResourceHacker (Editor de Recursos) salen 2 carpetas "String Table", luego el nombre de los 2 es "7", y el lenguaje de los 2 StringTable es 3082.

Pero el code esta bien?
Estoy queriendo modificar el recurso de un ejecutable echo en VB6 por si las dudas, no entiendo que hice mal.

SaluDOS!!! gracias por la respuesta.

seba123neo

La característica extraordinaria de las leyes de la física es que se aplican en todos lados, sea que tú elijas o no creer en ellas. Lo bueno de las ciencias es que siempre tienen la verdad, quieras creerla o no.

Neil deGrasse Tyson

EddyW

Cita de: seba123neo en  3 Marzo 2010, 06:04 AM
aca hay un ejemplo muy bueno, pero al parecer tampoco funca  :xD

Update/Delete Bitmap and String resource using API at runtime
Creo que fue lo primero que leí :P

Bueno ya me arreglare de alguna forma, gracias por las respuestas

SaluDOS!!!