Icone pour un nouveau fichier, je me sent seul ....

Vous débutez et vous avez besoin d'aide ? N'hésitez pas à poser vos questions
Avatar de l’utilisateur
Kwai chang caine
Messages : 6989
Inscription : sam. 23/sept./2006 18:32
Localisation : Isere

Icone pour un nouveau fichier, je me sent seul ....

Message par Kwai chang caine »

Bonjour a tous.

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.
ImageLe bonheur est une route...
Pas une destination

PureBasic Forum Officiel - Site PureBasic
Avatar de l’utilisateur
Flype
Messages : 2431
Inscription : jeu. 29/janv./2004 0:26
Localisation : Nantes

Message par Flype »

c'est à dire ?

est ce que tu parles de fichiers qui ont ta propre extension ( .kcc par ex ) ?

ou de fichiers dont l'extension est déjà connue du système ?
Image
Avatar de l’utilisateur
Kwai chang caine
Messages : 6989
Inscription : sam. 23/sept./2006 18:32
Localisation : Isere

Message par Kwai chang caine »

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.
ImageLe bonheur est une route...
Pas une destination

PureBasic Forum Officiel - Site PureBasic
Avatar de l’utilisateur
Flype
Messages : 2431
Inscription : jeu. 29/janv./2004 0:26
Localisation : Nantes

Message par Flype »

excuse moi mais j'ai lu et relu la question mais j'arrive vraiment pas à capter
exactement ce que tu veux faire ? :?
Image
Dr. Dri
Messages : 2527
Inscription : ven. 23/janv./2004 18:10

Message par Dr. Dri »

il crée manuellement un exe
il veut pouvoir choisir l'icone de son fichier...

faut regarder du côté des ressources mais je sais pas comment... ressource hacker sait le faire mais moi avec du code je sais pas

Dri
Avatar de l’utilisateur
Kwai chang caine
Messages : 6989
Inscription : sam. 23/sept./2006 18:32
Localisation : Isere

Message par Kwai chang caine »

Bonjour Flype et Dr DRi

Dr Dri a bien compris mon probleme. :wink:

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

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 
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
ImageLe bonheur est une route...
Pas une destination

PureBasic Forum Officiel - Site PureBasic
Avatar de l’utilisateur
Kwai chang caine
Messages : 6989
Inscription : sam. 23/sept./2006 18:32
Localisation : Isere

Message par Kwai chang caine »

Bonjour à tous ...

J'ai pas mal de visites sur ce POST, mais pas beaucoup de réponses. hormis Flype et le Docteur :(

C'est impossible ????
Personne n'a d'idée ????
Je me suis mal expliqué ????
ça interesse personne ????

C'est dur de se sentir seul :cry:

Merci d'avance de votre aide.
Bonne journée
ImageLe bonheur est une route...
Pas une destination

PureBasic Forum Officiel - Site PureBasic
Dr. Dri
Messages : 2527
Inscription : ven. 23/janv./2004 18:10

Message par Dr. Dri »

C'est pas impossible, puisque reshack peut le faire
J'ai pas le temps de me lancer dans ce genre de recherche désolé...
(sachant que je me suis déjà cassé les dents plusieurs fois là dessus)

Dri
Avatar de l’utilisateur
Kwai chang caine
Messages : 6989
Inscription : sam. 23/sept./2006 18:32
Localisation : Isere

Message par Kwai chang caine »

Merci qd meme de ta réponse, je suis donc pas tout seul sur l'ile Pure .. :lol:

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

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
ImageLe bonheur est une route...
Pas une destination

PureBasic Forum Officiel - Site PureBasic
nico
Messages : 3702
Inscription : ven. 13/févr./2004 0:57

Message par nico »

J'ai Window XP et ce code fonctionne très bien chez moi.
Avatar de l’utilisateur
Kwai chang caine
Messages : 6989
Inscription : sam. 23/sept./2006 18:32
Localisation : Isere

Message par Kwai chang caine »

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é 8)

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
ImageLe bonheur est une route...
Pas une destination

PureBasic Forum Officiel - Site PureBasic
Dr. Dri
Messages : 2527
Inscription : ven. 23/janv./2004 18:10

Message par Dr. Dri »

Kwai chang caine a écrit :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
C'est plutot que ca me manque lol

Dri
Avatar de l’utilisateur
Flype
Messages : 2431
Inscription : jeu. 29/janv./2004 0:26
Localisation : Nantes

Message par Flype »

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.
Image
Avatar de l’utilisateur
Flype
Messages : 2431
Inscription : jeu. 29/janv./2004 0:26
Localisation : Nantes

Message par Flype »

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.
Image
Avatar de l’utilisateur
Kwai chang caine
Messages : 6989
Inscription : sam. 23/sept./2006 18:32
Localisation : Isere

Message par Kwai chang caine »

Flype a écrit :et ben sympa l'ambiance sur vbfrance :
"Putin" t'a raison :lol:
"Putin" une nouvelle raison d'etre sur ce forum ou il y regne un calme olympien malgres quelques prises de becs :lol:

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

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 :lol: avec tout le rsespect que je lui doit. 8)

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

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

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

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

Encore merci a toi
Excelente soiree.
ImageLe bonheur est une route...
Pas une destination

PureBasic Forum Officiel - Site PureBasic
Répondre