Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1444 connectés 

  FORUM HardWare.fr
  Programmation
  C++

  Windows: UpdateResource [trouvé]

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Windows: UpdateResource [trouvé]

n°204743
LetoII
Le dormeur doit se réveiller
Posté le 29-08-2002 à 16:34:53  profilanswer
 

j'essaye de modifier les ressources d'une DLL:

Code :
  1. HANDLE file =  BeginUpdateResource("file.dll",false);
  2.    char temp[] = "test";
  3.    UpdateResource(file,RT_STRING,"#100",0,temp,(strlen(temp)+1)*sizeof(char));
  4.    EndUpdateResource(file ,false);


 
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
mood
Publicité
Posté le 29-08-2002 à 16:34:53  profilanswer
 

n°204766
LetoII
Le dormeur doit se réveiller
Posté le 29-08-2002 à 17:03:54  profilanswer
 

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)


---------------
Le Tyran
n°204812
LetoII
Le dormeur doit se réveiller
Posté le 29-08-2002 à 17:39:46  profilanswer
 

Bon alors, apparement c un problème d'identification de resource.
 
Si je met ça dans le fichier de resource d'un prog:
 

Code :
  1. STRINGTABLE
  2. {
  3.   100,       "chaine"
  4. }


 
 
Comment je fais pour identifier la resource avec des fonction comme FindResource?


---------------
Le Tyran
n°205011
HelloWorld
Salut tout le monde!
Posté le 29-08-2002 à 22:09:14  profilanswer
 

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.


---------------
FAQ fclc++ - FAQ C++ - C++ FAQ Lite
n°205294
LetoII
Le dormeur doit se réveiller
Posté le 30-08-2002 à 08:01:07  profilanswer
 

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


---------------
Le Tyran
n°205296
LetoII
Le dormeur doit se réveiller
Posté le 30-08-2002 à 08:08:30  profilanswer
 

TCHAR ça change rien. Et la macro MAKELANGID, je l'utilisais déjà (pas mis ici pour pas trop surcharger le code)


---------------
Le Tyran
n°205305
LetoII
Le dormeur doit se réveiller
Posté le 30-08-2002 à 08:57:18  profilanswer
 

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?


---------------
Le Tyran
n°205315
HelloWorld
Salut tout le monde!
Posté le 30-08-2002 à 09:01:07  profilanswer
 

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 ...


---------------
FAQ fclc++ - FAQ C++ - C++ FAQ Lite
n°205316
LetoII
Le dormeur doit se réveiller
Posté le 30-08-2002 à 09:03:44  profilanswer
 

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?)


---------------
Le Tyran
n°205319
LetoII
Le dormeur doit se réveiller
Posté le 30-08-2002 à 09:05:14  profilanswer
 

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 :D (j'avais ma lu la doc)
 


---------------
Le Tyran
mood
Publicité
Posté le 30-08-2002 à 09:05:14  profilanswer
 

n°205322
Carbon_14
Posté le 30-08-2002 à 09:06:15  profilanswer
 

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  
   );

n°205323
LetoII
Le dormeur doit se réveiller
Posté le 30-08-2002 à 09:07:14  profilanswer
 

Ca change rien, pourtant j'ai mis la même langue


---------------
Le Tyran
n°205324
LetoII
Le dormeur doit se réveiller
Posté le 30-08-2002 à 09:07:36  profilanswer
 

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


---------------
Le Tyran
n°205330
HelloWorld
Salut tout le monde!
Posté le 30-08-2002 à 09:13:43  profilanswer
 

Nan, le "#100" c'est bon, c'est une alternative si on connait le nombre.
Propriete de la dll -> langue, ca dit quoi ?


---------------
FAQ fclc++ - FAQ C++ - C++ FAQ Lite
n°205334
LetoII
Le dormeur doit se réveiller
Posté le 30-08-2002 à 09:15:16  profilanswer
 

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)


---------------
Le Tyran
n°205336
LetoII
Le dormeur doit se réveiller
Posté le 30-08-2002 à 09:16:24  profilanswer
 

En passant: j'arrive pas non plus à trouver les chaîne avec findresource. Alors que loadstring ça marche très bien.


---------------
Le Tyran
n°205350
HelloWorld
Salut tout le monde!
Posté le 30-08-2002 à 09:24:28  profilanswer
 

T'as regardé avec un éditeur de ressource pour être sûr de ce qui cloche ?


---------------
FAQ fclc++ - FAQ C++ - C++ FAQ Lite
n°205354
LetoII
Le dormeur doit se réveiller
Posté le 30-08-2002 à 09:28:20  profilanswer
 

HelloWorld a écrit a écrit :

T'as regardé avec un éditeur de ressource pour être sûr de ce qui cloche ?




 
 
 :ange:  
 
Ouai, alors quand on fait:

Code :
  1. STRINGTABLE LANGUAGE LANG_NEUTRAL,SUBLANG_SYS_DEFAULT
  2. {
  3.   100,       "chaine"
  4. }


 
Ca donne pas du tout 100 comme numéro de resource. Y a un moyen de le trouver ce numéro de ressouce?


---------------
Le Tyran
n°205372
HelloWorld
Salut tout le monde!
Posté le 30-08-2002 à 09:46:03  profilanswer
 

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#


---------------
FAQ fclc++ - FAQ C++ - C++ FAQ Lite
n°205378
LetoII
Le dormeur doit se réveiller
Posté le 30-08-2002 à 09:51:28  profilanswer
 

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.


---------------
Le Tyran
n°205397
LetoII
Le dormeur doit se réveiller
Posté le 30-08-2002 à 10:12:17  profilanswer
 

Je hai la doc de mocrosoft  :fou:


---------------
Le Tyran
n°205407
LetoII
Le dormeur doit se réveiller
Posté le 30-08-2002 à 10:20:06  profilanswer
 

Qn saurait où je peux trouver de la doc sur ce sujet?


---------------
Le Tyran
n°205504
LetoII
Le dormeur doit se réveiller
Posté le 30-08-2002 à 11:56:57  profilanswer
 

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 :D)


Message édité par LetoII le 30-08-2002 à 15:32:49

---------------
Le Tyran
n°205765
LetoII
Le dormeur doit se réveiller
Posté le 30-08-2002 à 15:36:31  profilanswer
 

UP Pour l'edit  :ange:


---------------
Le Tyran
mood
Publicité
Posté le   profilanswer
 


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C++

  Windows: UpdateResource [trouvé]

 

Sujets relatifs
[PHPBB] Cherche a suspendre les inscriptions mais trouve po :([PostGreSQL] Pilote ODBC et connexion a partir de windows
exe windows sous linux[vb] activer ou désactiver les checkbox qui se trouve dans un listebox
[JS] trouve pas de titre, problmes de syntax?[resolu]Liste indexée, ça existe ds la JDK ? Je trouve pas
Mettre à jour les icones de Windows[C] Format de fichier texte sous Windows ?
windowsWindows: Composants ActiveX
Plus de sujets relatifs à : Windows: UpdateResource [trouvé]


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR