Windows: UpdateResource [trouvé] - C++ - Programmation
Marsh Posté le 29-08-2002 à 17:03:54
Petite précision: j'essaye de modifier des chaines ajouté qui sont dans des stringtable dans le ficheir de ressource (c pour pas avoir à recompiler la DLL à chaque modif)
Marsh Posté le 29-08-2002 à 17:39:46
Bon alors, apparement c un problème d'identification de resource.
Si je met ça dans le fichier de resource d'un prog:
Code :
|
Comment je fais pour identifier la resource avec des fonction comme FindResource?
Marsh Posté le 29-08-2002 à 22:09:14
Yout d'abord il existes des softs qui font ca tres bien.
Il y en a un exellent et gratuit : resource hacker.
Sinon, un petit coup d'oeil dans la MSDN dit que:
- All data containing strings or text must be in Unicode format; lpData must not point to ANSI data.
donc je pense que ca ira mieux en replacant
char temp[]
par
TCHAR temp[] = TEXT("test" );
ton
(strlen(temp) + 1) * sizeof(char)
devient mauvais du coup
tu peux utiliser
sizeof(temp)
a la place, ou alors
(wstrlen(temp) + 1) * sizeof(TCHAR);
ou aussi avec lstrlenW (de l'API win32 et pas du C)
Pour la langue, miaux vaur utiliser
MAKELANGID(LANG_NEUTRAL, SUBLANG_NEUTRAL)
bon, ca donne toujours 0, mais on une meilleur idée de ce que c'est que ce 0.
Ca devrait aller mieux.
Marsh Posté le 30-08-2002 à 08:01:07
HelloWorld a écrit a écrit : Yout d'abord il existes des softs qui font ca tres bien. Il y en a un exellent et gratuit : resource hacker. Sinon, un petit coup d'oeil dans la MSDN dit que: - All data containing strings or text must be in Unicode format; lpData must not point to ANSI data. donc je pense que ca ira mieux en replacant char temp[] par TCHAR temp[] = TEXT("test" ); ton (strlen(temp) + 1) * sizeof(char) devient mauvais du coup tu peux utiliser sizeof(temp) a la place, ou alors (wstrlen(temp) + 1) * sizeof(TCHAR); ou aussi avec lstrlenW (de l'API win32 et pas du C) Pour la langue, miaux vaur utiliser MAKELANGID(LANG_NEUTRAL, SUBLANG_NEUTRAL) bon, ca donne toujours 0, mais on une meilleur idée de ce que c'est que ce 0. Ca devrait aller mieux. |
Le pb vient pas de là. Il me rajoute bien les chaînes dans les ressources. Le pb c'est qu'elles remplacent pas les ensiènes
Marsh Posté le 30-08-2002 à 08:08:30
TCHAR ça change rien. Et la macro MAKELANGID, je l'utilisais déjà (pas mis ici pour pas trop surcharger le code)
Marsh Posté le 30-08-2002 à 08:57:18
C bien ça le pb. Il ne me remplace pas la chaîne existante mais m'en rajoute une. Après si je réeesaye c celle qui est rajoutée qui est modifiée. C donc que j'identifie mal la resource. qqn a une idée?
Marsh Posté le 30-08-2002 à 09:01:07
Ha, je comprend mieux "ma chaine est rajoutée mais c'est pas modifié"
En somme, tu as ta chaine en double ?
Si oui, l'erreur se situe peut etre (peut etre) au niveau de la langue ...
Marsh Posté le 30-08-2002 à 09:03:44
HelloWorld a écrit a écrit : Ha, je comprend mieux "ma chaine est rajoutée mais c'est pas modifié" En somme, tu as ta chaine en double ? Si oui, l'erreur se situe peut etre (peut etre) au niveau de la langue ... |
C possible.
J'ai pas précisé de langue dans le fichier de ressource.
Je fais comment? (pour la syntaxe je vois c pour le numéro, la macro est utilisable?)
Marsh Posté le 30-08-2002 à 09:05:14
letoII a écrit a écrit : C possible. J'ai pas précisé de langue dans le fichier de ressource. Je fais comment? (pour la syntaxe je vois c pour le numéro, la macro est utilisable?) |
question con, on oublie (j'avais ma lu la doc)
Marsh Posté le 30-08-2002 à 09:06:15
A tout hasard, ça irait pas en remplaçant le "#100" par MAKEINTRESOURCE(100) ?
The MAKEINTRESOURCE macro converts an integer value to a resource type compatible with Win32 resource-management functions. This macro is used in place of a string containing the name of the resource.
LPTSTR MAKEINTRESOURCE(
WORD wInteger // integer to convert
);
Marsh Posté le 30-08-2002 à 09:07:14
Ca change rien, pourtant j'ai mis la même langue
Marsh Posté le 30-08-2002 à 09:07:36
carbon_14 a écrit a écrit : A tout hasard, ça irait pas en remplaçant le "#100" par MAKEINTRESOURCE(100) ? The MAKEINTRESOURCE macro converts an integer value to a resource type compatible with Win32 resource-management functions. This macro is used in place of a string containing the name of the resource. LPTSTR MAKEINTRESOURCE( WORD wInteger // integer to convert ); |
J'avais essayé aussi, ça marchait pas mieu
Marsh Posté le 30-08-2002 à 09:13:43
Nan, le "#100" c'est bon, c'est une alternative si on connait le nombre.
Propriete de la dll -> langue, ca dit quoi ?
Marsh Posté le 30-08-2002 à 09:15:16
HelloWorld a écrit a écrit : Nan, le "#100" c'est bon, c'est une alternative si on connait le nombre. Propriete de la dll -> langue, ca dit quoi ? |
Français (France)
Marsh Posté le 30-08-2002 à 09:16:24
En passant: j'arrive pas non plus à trouver les chaîne avec findresource. Alors que loadstring ça marche très bien.
Marsh Posté le 30-08-2002 à 09:24:28
T'as regardé avec un éditeur de ressource pour être sûr de ce qui cloche ?
Marsh Posté le 30-08-2002 à 09:28:20
HelloWorld a écrit a écrit : T'as regardé avec un éditeur de ressource pour être sûr de ce qui cloche ? |
Ouai, alors quand on fait:
Code :
|
Ca donne pas du tout 100 comme numéro de resource. Y a un moyen de le trouver ce numéro de ressouce?
Marsh Posté le 30-08-2002 à 09:46:03
Je sais pas si c'est ironique ou quoi ...
Moi ce qui m'intéresse c'est l'état de ta dll après execution de ton UpdadeResource ...
http://www.softnews.ro/public/cat/5/4/5-4-5.shtml#
Marsh Posté le 30-08-2002 à 09:51:28
C bon j'ai compris.
Les chaînes son rangées par groupes de 16. Donc la ressource de type chaine de numéro 1 correspond aux chaines numéro 0 à 15...
C pour ça que ça marchait pas.
Marsh Posté le 30-08-2002 à 10:20:06
Qn saurait où je peux trouver de la doc sur ce sujet?
Marsh Posté le 30-08-2002 à 11:56:57
J'ai réeussi, mais faute de doc précise sur le sujet ça fait un peu bidouille quand même...
Si ça intéresse qqn je posterai la soluce (EDIT la vrai )
Marsh Posté le 29-08-2002 à 16:34:53
j'essaye de modifier les ressources d'une DLL:
Alors il m'ouvre bien le fichier, me fait les changement mais quand je recharge les resources ça a pas changé alors qu'il a eu auccune erreur.
Message édité par LetoII le 30-08-2002 à 15:37:00
---------------
Le Tyran