Icone pour un nouveau fichier, je me sent seul ....
- Kwai chang caine
- Messages : 6989
- Inscription : sam. 23/sept./2006 18:32
- Localisation : Isere
Icone pour un nouveau fichier, je me sent seul ....
Bonjour a tous.
Savez vous comment mettre un icone a un fichier que l'on va creer avec OpenFile ou CreateFile.
Bonne journée
Savez vous comment mettre un icone a un fichier que l'on va creer avec OpenFile ou CreateFile.
Bonne journée
Dernière modification par Kwai chang caine le dim. 05/nov./2006 14:18, modifié 1 fois.
- Kwai chang caine
- Messages : 6989
- Inscription : sam. 23/sept./2006 18:32
- Localisation : Isere
Bonsoir flype
Je voulais parler de fichiers en general, mais d'apres ta question, je pense que tu va me dire que si l'extension est connue de windows comme les TXT par exemple on ne doit pas pouvoir ????
En fait c'est surtout pour un EXE que je crée moi meme, mais par le code, pas en passant par le compilateur de pb.
Je voulais parler de fichiers en general, mais d'apres ta question, je pense que tu va me dire que si l'extension est connue de windows comme les TXT par exemple on ne doit pas pouvoir ????
En fait c'est surtout pour un EXE que je crée moi meme, mais par le code, pas en passant par le compilateur de pb.
- Kwai chang caine
- Messages : 6989
- Inscription : sam. 23/sept./2006 18:32
- Localisation : Isere
Bonjour Flype et Dr DRi
Dr Dri a bien compris mon probleme.
J'ai fait un createur de setup autoextractible a l'aide de plusieurs codes trouvés sur les forums dont la base est de DORIAN.
Donc je créé un premier exe qui servira à l'extraction.
Il est lui-meme intégré en tete d'un fichier que je créé et nomme selon le nom du repertoire que je veux compacter en exe.
Puis en data je met le fichier pack du répertoire, obtenu avec packer de pb.
Lorsque l'on clique sur l'exe obtenu au dessus, il "s'auto-lit" (Je ne sais pas si c'est francais), puis extrait le packer, le decompacte et j'obtiens le repertoire d'origine ou je le veux.
Tout cela marche bien, mais le bleme c'est que quand je créé le fichier avec createfile, je ne peux lui attribuer un icone, donc mon exe autoextractible est désesperement blanc et bleu.
Dr Dri a raison pour le changement d'icone avec reshack, ça marche, je l'ai fait pour changer la couleur de l'icone de pb 3.94 de rouge à vert pour ne pas les confondre dans ma barre des taches lorsqu'ils sont tous les 2 en route.
Mais par le code, c'est apparement plus compliqué.
J'ai trouvé un code de OUF provenant de TRAUMATIC sur le forum anglais, mais il ne marche pas chez moi et j'ai pourtant bien XP, d'ailleurs si quelqu'un peut me dire si chez lui ce code marche, ou bien pourquoi il ne marche pas car il dépasse de loin mes compétences :
Donc je me suis dit qu'il serait peut etre plus facile de donner l'icone a un fichier que l'on créé, plutot qu'a un exe déja créé.
Voila l'ampleur de mon probleme.
Merci à vous deux.
Bonne journée
Dr Dri a bien compris mon probleme.

J'ai fait un createur de setup autoextractible a l'aide de plusieurs codes trouvés sur les forums dont la base est de DORIAN.
Donc je créé un premier exe qui servira à l'extraction.
Il est lui-meme intégré en tete d'un fichier que je créé et nomme selon le nom du repertoire que je veux compacter en exe.
Puis en data je met le fichier pack du répertoire, obtenu avec packer de pb.
Lorsque l'on clique sur l'exe obtenu au dessus, il "s'auto-lit" (Je ne sais pas si c'est francais), puis extrait le packer, le decompacte et j'obtiens le repertoire d'origine ou je le veux.
Tout cela marche bien, mais le bleme c'est que quand je créé le fichier avec createfile, je ne peux lui attribuer un icone, donc mon exe autoextractible est désesperement blanc et bleu.
Dr Dri a raison pour le changement d'icone avec reshack, ça marche, je l'ai fait pour changer la couleur de l'icone de pb 3.94 de rouge à vert pour ne pas les confondre dans ma barre des taches lorsqu'ils sont tous les 2 en route.

Mais par le code, c'est apparement plus compliqué.
J'ai trouvé un code de OUF provenant de TRAUMATIC sur le forum anglais, mais il ne marche pas chez moi et j'ai pourtant bien XP, d'ailleurs si quelqu'un peut me dire si chez lui ce code marche, ou bien pourquoi il ne marche pas car il dépasse de loin mes compétences :
Code : Tout sélectionner
; Changing icon resources in executables (the NT-API way)
;
; NOTE: Needs NT, 2000 or XP to work
;
; WARNING: the following code is known to fail in certain cases
; be sure to backup your data before using this!
;
; (:t)raumatic - february 2005
#RT_GROUP_ICON = #RT_ICON + 11
; http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnwui/html/msdn_icons.asp
Structure ICONDIRENTRYCOMMON
bWidth.b ; Width, in pixels, of the image
bHeight.b ; Height, in pixels, of the image
bColorCount.b ; Number of colors in image (0 if >=8bpp)
bReserved.b ; Reserved ( must be 0)
wPlanes.w ; Color Planes
wBitCount.w ; Bits per pixel
dwBytesInRes.l ; How many bytes in this resource?
EndStructure
;
Structure ICONDIRENTRY
common.ICONDIRENTRYCOMMON
dwImageOffset.l ; Where in the file is this image?
EndStructure
Structure ICONDIR
idReserved.w ; Reserved (must be 0)
idType.w ; Resource Type (1 for icons)
idCount.w ; How many images?
idEntries.ICONDIRENTRY[0] ; An entry for each image (idCount of 'em)
EndStructure
;
Structure GRPICONDIRENTRY
common.ICONDIRENTRYCOMMON
nId.w ; the ID
EndStructure
Structure GRPICONDIR
idReserved.w ; Reserved (must be 0)
idType.w ; Resource type (1 for icons)
idCount.w ; How many images?
idEntries.GRPICONDIRENTRY[0] ; The entries for each image
EndStructure
;
; Change Icon-Resource in "exeFilename.s" with "iconFileName.s"
;
Procedure.l ChangeIcon(iconFileName.s, exeFileName.s)
*icon.ICONDIR = AllocateMemory(SizeOf(ICONDIR))
If ReadFile(0, iconFileName.s)
ReadData(*icon, SizeOf(ICONDIR))
*icon = ReAllocateMemory(*icon, SizeOf(ICONDIR) + (*icon\idCount*2) *SizeOf(ICONDIRENTRY))
For i=0 To *icon\idCount-1
FileSeek(6+SizeOf(ICONDIRENTRY) * i) ; SizeOf(ICONDIR) - SizeOf(ICONDIRENTRY) = 6
ReadData(*icon\idEntries[i], SizeOf(ICONDIRENTRY) * (i+1))
Next
;
hInst.l = BeginUpdateResource_(exeFileName, #False)
If hInst = 0
retVal.l = #False
Else
; CHANGE #RT_GROUP_ICON
*iconGroup.GRPICONDIR = AllocateMemory(SizeOf(GRPICONDIR) + 6 + SizeOf(GRPICONDIRENTRY) * *icon\idCount)
For i=0 To *icon\idCount-1
CopyMemory(*icon\idEntries[i]\common, *iconGroup\idEntries[i]\common, SizeOf(ICONDIRENTRYCOMMON))
*iconGroup\idEntries[i]\nId = (i+1)
Next
*iconGroup\idReserved = 0
*iconGroup\idType = 1
*iconGroup\idCount = *icon\idCount
;
; TODO: Error with bColorCount
; Written value is always wrong!? (e.g. 1 instead of 16)
;
retVal = UpdateResource_(hInst, #RT_GROUP_ICON, 1, #LANG_NEUTRAL, *iconGroup, 6+SizeOf(GRPICONDIRENTRY)* *iconGroup\idCount)
FreeMemory(*iconGroup) : *iconGroup = #Null
; CHANGE #RT_ICON
For i = 0 To *icon\idCount-1
; get the desired icon from .ico file
*resData = AllocateMemory(*icon\idEntries[i]\common\dwBytesInRes)
FileSeek(*icon\idEntries[i]\dwImageOffset)
ReadData(*resData, *icon\idEntries[i]\common\dwBytesInRes)
retVal = UpdateResource_(hInst, #RT_ICON, (i+1), #LANG_NEUTRAL, *resData, *icon\idEntries[i]\common\dwBytesInRes)
Next
retVal = EndUpdateResource_(hInst, #False)
FreeMemory(*resData) : *resData = #Null
EndIf
FreeMemory(*icon) : *icon = #Null
CloseFile(0)
Else
retVal = #False
EndIf
ProcedureReturn retVal
EndProcedure
Voila l'ampleur de mon probleme.
Merci à vous deux.
Bonne journée
- Kwai chang caine
- Messages : 6989
- Inscription : sam. 23/sept./2006 18:32
- Localisation : Isere
- Kwai chang caine
- Messages : 6989
- Inscription : sam. 23/sept./2006 18:32
- Localisation : Isere
Merci qd meme de ta réponse, je suis donc pas tout seul sur l'ile Pure ..
Bah dis donc si quelqu'un de ton niveau n'y arrive pas, j'ai pas fini.
Je doit gonfler tout le monde avec mes questions à la con ...
Bon j'attend un peu pour savoir si quelqu'un a un filon .....
Au fait, elle est mignone ta petite tasse de WD, t'en avait marre de voler dans les airs .....
Bonne journée a toi Docteur

Bah dis donc si quelqu'un de ton niveau n'y arrive pas, j'ai pas fini.
Je doit gonfler tout le monde avec mes questions à la con ...

Bon j'attend un peu pour savoir si quelqu'un a un filon .....
Au fait, elle est mignone ta petite tasse de WD, t'en avait marre de voler dans les airs .....
Bonne journée a toi Docteur
- Kwai chang caine
- Messages : 6989
- Inscription : sam. 23/sept./2006 18:32
- Localisation : Isere
Bonjour Nico
Mais oui, Mais oui, tu as raison il marche.
Quand tu m'a dit qu'il marchait chez toi, j'ai tout éssayé...
Et j'ai trouvé
En fait moi j'essaye de mettre un icone à un exe qui n'en a pas.
Alors j'ai essayé avec un exe qui en avait deja un et la tu as raison ça marche.
Essaye avec un exe créé en pure sans icone, chez moi ça marche pas.
Tu serais me dire pourquoi ????
Je te remercie de ton interet.
Bonne soiree
Mais oui, Mais oui, tu as raison il marche.
Quand tu m'a dit qu'il marchait chez toi, j'ai tout éssayé...
Et j'ai trouvé

En fait moi j'essaye de mettre un icone à un exe qui n'en a pas.
Alors j'ai essayé avec un exe qui en avait deja un et la tu as raison ça marche.
Essaye avec un exe créé en pure sans icone, chez moi ça marche pas.
Tu serais me dire pourquoi ????
Je te remercie de ton interet.
Bonne soiree
juste un complément d'info,
il y a une page intéressante sur msdn concernant les formats d'icones dans les exe et les dll ici :
http://msdn.microsoft.com/library/defau ... _icons.asp
je vais essayé de t'aider un tout petit peu meme si DrDri s'y ai cassé les dents.
il y a une page intéressante sur msdn concernant les formats d'icones dans les exe et les dll ici :
http://msdn.microsoft.com/library/defau ... _icons.asp
je vais essayé de t'aider un tout petit peu meme si DrDri s'y ai cassé les dents.
et ben sympa l'ambiance sur vbfrance :
http://www.vbfrance.com/infomsg_CHANGER ... 44134.aspx
à part çà pas de réponse dans ce thread.
par contre ici on s'en rapproche plus.
http://www.vbfrance.com/codes/AJOUTER-O ... 28139.aspx
ce qui est apparemment la meme solution que celle de traumatic.
http://www.vbfrance.com/infomsg_CHANGER ... 44134.aspx
à part çà pas de réponse dans ce thread.
par contre ici on s'en rapproche plus.
http://www.vbfrance.com/codes/AJOUTER-O ... 28139.aspx
ce qui est apparemment la meme solution que celle de traumatic.
- Kwai chang caine
- Messages : 6989
- Inscription : sam. 23/sept./2006 18:32
- Localisation : Isere
"Putin" t'a raisonFlype a écrit :et ben sympa l'ambiance sur vbfrance :

"Putin" une nouvelle raison d'etre sur ce forum ou il y regne un calme olympien malgres quelques prises de becs

Je te remercie, j'ai grandement besoin de ton aide.
Bah dis donc , tout ça pour juste un petit icone de rien.
Des fois la reponse est disproportionnée à la question.
Entretemps j'ai essayé un truc nul.
J'ai compilé avec le compilateur pure un exe sans code, mais avec un icone et ça marche.
Je me suis dit, mais comment il fait ce satané compilateur pour integrer un icone dans un fichier presque vide.
Je me suis aussi dit qu'en essayant de lire l'hexa , ou bien bidouiller enfin je crois que tu as bien fait de reposter car je me perd dans des chemins hasardeux.
Mais bon j'essaye tout ce qui me passe par la tete, avec mes faibles connaissances, je suis comme beaucoup de passionné en prog, je n'aime pas abandonné, et en général ça paye.

Pour ta reponse, apparement c'est du coté du C ou de L'ASM qu'il faut regarder.
Y'en a un qui serait content, c'est notre amis SPH que je surnomme en privé amicalement AsMan


Bah mince, y'avais longtemps que je n'y avais pas remis les pieds, puisque meme au boulot, je programme pour l'instant en pure, enfin j'essaye. Si j'avais su que chez eux ils avait la solution.
Je vais regardé ça de plus pres, mais je ne sais pas si je serais assez calé pour convertir.Mais qui n'essais rien n'a rien.
A combattre sans peril, on triomphe sans gloire.....je sais, je sais ya plaggia c'est pas de moi, mais c'est joli.

Je vais qd meme pas appeler un exe en VB avec un exe en Pure pour modifier un autre exe en pure qui a besoin d'un icone ...

La prog c'est pas un metier facile.
Je le dit tout le temps, j'aurais mieux fait d'aimer la boulangerie.

En tout cas je te remercie grandement, je savais que je pouvais compter sur toi, je me suis senti un peu seul dans cette affaire.
C'est quand meme dingue que je sois le seul illuminé a avoir besoin d'un code comme celui la.

Encore merci a toi
Excelente soiree.