C'est ce que j'allais suggérerDobro a écrit :soit dit en passant
tu as aussi la possibilité d'utiliser les includes de Purebasic
au lieu d'un fichier ressources (mais ça grossi l'executable)
sinon il reste l'utilisation d'une archive
genre Zip , et tu pioche ce que tu as besoin dedans !
ps t'es pas obligé de mettre une extention *.zip a un zip !
tu peux l'appeler *.Rsc , et en fait utiliser une librairie pour acceder au contenu du zip
de prime abords, tu sera le seul a savoir que c'est un ZIP !!
Ressources
~~~~Règles du forum ~~~~
⋅.˳˳.⋅ॱ˙˙ॱ⋅.˳Ar-S ˳.⋅ॱ˙˙ॱ⋅.˳˳.⋅
W11x64 PB 6.x
Section HORS SUJET : ICI
LDV MULTIMEDIA : Dépannage informatique & mes Logiciels PB
UPLOAD D'IMAGES : Uploader des images de vos logiciels
⋅.˳˳.⋅ॱ˙˙ॱ⋅.˳Ar-S ˳.⋅ॱ˙˙ॱ⋅.˳˳.⋅
W11x64 PB 6.x
Section HORS SUJET : ICI
LDV MULTIMEDIA : Dépannage informatique & mes Logiciels PB
UPLOAD D'IMAGES : Uploader des images de vos logiciels
- Kwai chang caine
- Messages : 6992
- Inscription : sam. 23/sept./2006 18:32
- Localisation : Isere
Merci à vous deux.
Pour l'include, ça a été ma premiere idée, car c'est une des fonctions les plus top a mon avis de PB.
Mais ce bourrin de VB, y connait pas les includes
Et vous savez depuis le temps que j'essaie de faire faire des petits entre eux
Non en fait, je m'arrange toujours au plus a ce que les deux languages trouve un terrain d'entente.
Et la pour le coup, c'est top, car ce sont les memes fichiers sous la meme norme qui sont geré par les deux languages, alors si je saute pas sur cette occase.....pour une fois qu'ils ont quelque chose en commun
Pour l'include, ça a été ma premiere idée, car c'est une des fonctions les plus top a mon avis de PB.
Mais ce bourrin de VB, y connait pas les includes
Et vous savez depuis le temps que j'essaie de faire faire des petits entre eux
Non en fait, je m'arrange toujours au plus a ce que les deux languages trouve un terrain d'entente.
Et la pour le coup, c'est top, car ce sont les memes fichiers sous la meme norme qui sont geré par les deux languages, alors si je saute pas sur cette occase.....pour une fois qu'ils ont quelque chose en commun
- Kwai chang caine
- Messages : 6992
- Inscription : sam. 23/sept./2006 18:32
- Localisation : Isere
Il est vraiment genial ce code de DROOPY merciDroopy a écrit :Voici le code de la DroopyLib qui traite des ressources :
C'est beaucoup plus simple qu'avec includebinary quand tu as beaucoups de fichier à inclure (de plus ils ne sont pas chargés en mémoire)Code : Tout sélectionner
; PureBasic 3.94 25/11/05 ; Create a File with RC Extension And include it as RC_DATA Resource Type ; Path can be absolute Or relative ; Exemple : ; REG RCData "C:\WINDOWS\REGEDIT.EXE" ; SON RCData "son.wav" ; Image RCData "image.bmp" ;/ SaveResourceAs(Name.s,File.s) Save the resource as a file ;/ GetResourcePointer(Name.s) is usefull with PureBasic CatchXXX functions (CatchImage / CatchSound ... ) ProcedureDLL SaveResourceAs(Name.s,File.s) ; (Use GetModuleHandle_ if you want to specify another file) HandleResource= FindResource_(0,@Name,#RT_RCDATA) If HandleResource HandleGlobalMemoryBlock=LoadResource_(0,HandleResource) PointerFirstByteOfTheResource=LockResource_(HandleGlobalMemoryBlock) ; Get size of the resource Size= SizeofResource_(Handle,HandleResource) ; Save the file FileId=OpenFile(#PB_Any,File) If FileId WriteData(HandleGlobalMemoryBlock,Size) CloseFile(FileId) EndIf ; Test if the file is written If FileSize(File)=Size ProcedureReturn 1 EndIf EndIf EndProcedure ProcedureDLL GetResourcePointer(Name.s) ; (Use GetModuleHandle_ if you want to specify another file) HandleResource= FindResource_(0,@Name,#RT_RCDATA) If HandleResource HandleGlobalMemoryBlock=LoadResource_(0,HandleResource) PointerFirstByteOfTheResource=LockResource_(HandleGlobalMemoryBlock) ProcedureReturn HandleGlobalMemoryBlock EndIf EndProcedure ProcedureDLL GetResourceSize(Name.s) ; (Use GetModuleHandle_ if you want to specify another file) HandleResource= FindResource_(0,@Name,#RT_RCDATA) If HandleResource HandleGlobalMemoryBlock=LoadResource_(0,HandleResource) PointerFirstByteOfTheResource=LockResource_(HandleGlobalMemoryBlock) ; Return the size of the resource Size= SizeofResource_(Handle,HandleResource) ProcedureReturn Size EndIf EndProcedure ;/ Test ; CatchImage(0,GetResourcePointer("IMAGE")) ; OpenWindow(0,0,0,240,240,#PB_Window_SystemMenu|#PB_Window_ScreenCentered,"ImageGadget") ; CreateGadgetList(WindowID(0)) ; ImageGadget(0,20,20,200,200,UseImage(0),#PB_Image_Border) ; SaveResourceAs("REG","d:\Out.exe") ; InitSound() ; CatchSound(0,GetResourcePointer("SON")) ; PlaySound(0) ; Delay(2000)
Ce code utilise l'api win32, donc ne fonctionne pas sous nunux
Mais y'a encore une mouche dans le lait à KCC
Y manque un exemple de l'API "EnumResourceNames"
J'ai essayé avec mes petits doigts boudinés de decortiquer le code de SOLDAT ou de DENIS qui traitent aussi des ressources....
Mais c'est des usines à gaz avec envoi a l'adresse de procedure, structure et tout le toutim....enfin bref de la haute couture et KCC il a pas les moyens
A part des BOUINGS il a rien ressorti de bon.....
En fait KCC il voulait la liste des ressources ...et il a un generateur de son mononote....BOUING BOUING BOUING BOUING !!!!!
Une ame sensible pourrait creer une procedure la plus simple possible comme celle de DROOPY qui pourrait completer sa lib, pour donner la liste des ressources dans son propre exe comme l'exemple de DROOPY ????
Car je trouve que des exemples ou faut faire des LoadLibraryEx d'un EXE ou d'une DLL
Comme celui de VB
Code : Tout sélectionner
vHandle = LoadLibraryEx(vFileName, 0, LOAD_LIBRARY_AS_DATAFILE)
If vHandle = 0 Then
Print "Invalid library"
Exit Sub
End If
Dim i As resType
Set f = Me
For i = RT_FIRST To RT_LAST
Print "Tipo: "; i,
EnumResourceNames vHandle, i, AddressOf EnumResNameProc, 0
Print
Next
FreeLibrary vHandCode : Tout sélectionner
Import "Essai.RES"
EndImportKwai chang caine
bien que tu dises que nos petits code sont des usines à gaz, ce n'est pas moi qui ai créé l'APUI EnumResourceNames. mais Microsoft.
La doc MS dit ceci sur cette API :
Comme tu vois, tu est obligé de passer l'adresse de ta callback personnelle c'est d'ailleurs le cas de ton exemple VB, mais tu n'as surement pas vu cette callback VB.
C'est beaucoup plus simple que tu ne le penses et je pense que c'est à ta portée surtout qu'il y a des code PB
bien que tu dises que nos petits code sont des usines à gaz, ce n'est pas moi qui ai créé l'APUI EnumResourceNames. mais Microsoft.
La doc MS dit ceci sur cette API :
Ce qui veut dire que pour chaque ressource trouvée (pour le type voulue comme des icônes, des curseurs, etc), la fonction EnumResourceNames appelles une callback définie par l'application (dans ce cas c'est toi), en passant le nom de l'ID de chaque ressource qu'elle trouve ainsi que les autres paramètres qui ont été passés à EnumResourceNames.For each resource found, EnumResourceNames calls an application-defined callback function lpEnumFunc, passing the name or the ID of each resource it finds, as well as the various other parameters that were passed to EnumResourceNames.
Comme tu vois, tu est obligé de passer l'adresse de ta callback personnelle c'est d'ailleurs le cas de ton exemple VB, mais tu n'as surement pas vu cette callback VB.
C'est beaucoup plus simple que tu ne le penses et je pense que c'est à ta portée surtout qu'il y a des code PB
- Kwai chang caine
- Messages : 6992
- Inscription : sam. 23/sept./2006 18:32
- Localisation : Isere
Bonjour DENISbien que tu dises que nos petits code sont des usines à gaz, ce n'est pas moi qui ai créé l'APUI EnumResourceNames. mais Microsoft.
Par usine a gaz....j'entend compliqué, d'ailleur c'est la signification du mot
Mais en aucun cas ça veux dire bordelique
Et comme vos codes ils extraient des icones et tout et tout, je croyais naivement que vous aviez eu besoin de 70 % du code pour faire l'extraction ou je ne sais quoi.....
Tu avouera quand meme que pour les fonctions que DROOPY a utilisé, c'est drolement plus simple
Mais bon surement que si CROSOFT il a dit....et ben DROOPY il aurait fait comme vous
Faut dire aussi que y'a pas idée de faire utiliser une callback pour une si petite chose
Ce CROSOFT, c'est l'art de faire compliqué alors qu'on peut surement faire simple
Bon maintenant que je sais que y'a pas d'autres choix......je vais me faire une petite serie de BOUINGS de bon matin, jusqu'a la solution
En tout cas merci a tous les deux pour vos codes qui sont un bon depart....meme si ils ressemblent un peu a une usine a gaz
Encore merci de ta reponse
Bonne journée
- Kwai chang caine
- Messages : 6992
- Inscription : sam. 23/sept./2006 18:32
- Localisation : Isere
Bon ayaihh !!!!
KCC il a planché noir
Grace au code de SHARDIK, et aussi a l'aide de EESAU, il a pu faire ce qu'il voulait.
En fait je cherchais un handle et EESAU m'a juste dit de mettre un zero
Tous mes soucis pour un zero
Remarquez....je vous cause bien a tous des soucis, et j'suis bien un zero
Alors comme quoi, KCC il viens de prouver que ZERO c'est pas null.
Quoi que dans son cas zero c'est aussi un NULL
Donc voici le code si ça interesse "quinquin"
Par contre pour les fichier RC...
DROOPY il a toujours mis "RCDATA" pour tous les styles de fichiers.
Alors que sur le WEB, je vois des BITMAP, ICON etc....
Alors qu'est ce qu'il faut mettre toujours RCDATA ?????
KCC il a planché noir
Grace au code de SHARDIK, et aussi a l'aide de EESAU, il a pu faire ce qu'il voulait.
En fait je cherchais un handle et EESAU m'a juste dit de mettre un zero
Tous mes soucis pour un zero
Remarquez....je vous cause bien a tous des soucis, et j'suis bien un zero
Alors comme quoi, KCC il viens de prouver que ZERO c'est pas null.
Quoi que dans son cas zero c'est aussi un NULL
Donc voici le code si ça interesse "quinquin"
Code : Tout sélectionner
Import "c:\Fichiers.res"
EndImport
Procedure.l EnumResNameProc(ResHandle.L, ResType.L, ResName.L, AppParam.L)
Debug PeekS(ResName)
ProcedureReturn #True
EndProcedure
Procedure.L EnumResTypeProc(ResHandle.L, ResType.L, AppParam.L)
Debug ResType
EnumResourceNames_(ResHandle, ResType, @EnumResNameProc(), 0)
ProcedureReturn #True
EndProcedure
EnumResourceTypes_(0, @EnumResTypeProc(), 0)
Repeat
Delay(100)
ForEver DROOPY il a toujours mis "RCDATA" pour tous les styles de fichiers.
Alors que sur le WEB, je vois des BITMAP, ICON etc....
Alors qu'est ce qu'il faut mettre toujours RCDATA ?????
Normalement, les fichiers ressources ont l'extension RC et suivent certaines regles (il est préférable d'utiliser un éditeur de ressource pour créer le fichier rc).
Les fichiers résidents PB (.res) ne sont pas des ressources mais suivent un codage propre à Fred qui évolue et fonction des versions de PB. A l'intérieur des res on y trouve des constantes, structures, macro etc.
Voilà les type de ressoures (au sens de MS) que j'ai mis en enumeration, il y a pas mal de possibilités.
le stockage RCDATA est une manière de stocker des données brutes en suivant les règles de MS (voir ici) http://msdn.microsoft.com/en-us/library ... 85%29.aspx
Si on veux stocker des icônes il est mieux d'utiliser #RT_ICON en association avec #RT_GROUP_ICON pour le classement etc.
Voici un exemple de fichier RC que j'utilise dans l'application sur laquelle je travaille , exemple avec RCDATA
exemple avec une STRINGTABLE qui me permet de gérer mes message d'erreurs, une partie en français (utilisation de LANGUAGE LANG_FRENCH, LOCALE_USER_DEFAULT) et pour les autres language non français LANGUAGE LANG_ENGLISH, SUBLANG_NEUTRAL.
En fait j'ai mis le maximum de chose dans le fichier RC au lieu des datas de PB
et voici pour exemple d'utilisation des stringtable avec la procedure d'affichage de la fenêtre à propos de
Je sais, tu vas me dire que c'est une usine à gaz
avec un éditeur de ressources, on a ceci

Les fichiers résidents PB (.res) ne sont pas des ressources mais suivent un codage propre à Fred qui évolue et fonction des versions de PB. A l'intérieur des res on y trouve des constantes, structures, macro etc.
Voilà les type de ressoures (au sens de MS) que j'ai mis en enumeration, il y a pas mal de possibilités.
Code : Tout sélectionner
Enumeration ; RessourceType, WinUser.h
#RT_CURSOR = 1
#RT_BITMAP = 2
#RT_ICON = 3
#RT_MENU = 4
#RT_DIALOG = 5
#RT_STRING = 6
#RT_FONTDIR = 7
#RT_FONT = 8
#RT_ACCELERATOR = 9
#RT_RCDATA = 10
#RT_MESSAGETABLE = 11
#RT_GROUP_CURSOR = 12
#RT_GROUP_ICON = 14
#RT_VERSION = 16
#RT_DLGINCLUDE = 17
#RT_PLUGPLAY = 19
#RT_VXD = 20
#RT_ANICURSOR = 21
#RT_ANIICON = 22
#RT_HTML = 23
#RT_MANIFEST = 24
EndEnumeration
Si on veux stocker des icônes il est mieux d'utiliser #RT_ICON en association avec #RT_GROUP_ICON pour le classement etc.
Voici un exemple de fichier RC que j'utilise dans l'application sur laquelle je travaille , exemple avec RCDATA
Code : Tout sélectionner
#include "resource.h"
#define folder_explorer 0
#define Extraire 1
#define Convertir 2
#define Favoris 3
#define Tools 4
#define Aide 5
#define Apropos 6
#define Quit 7
#define Icone_vierge 20
#define FlecheUp 21
#define FlecheDown 22
#define Empy_dll 30
#define IID_IStorage 40
LANGUAGE LANG_NEUTRAL, SUBLANG_NEUTRAL
// Les images PNG de la barre d'outils
folder_explorer RCDATA "K:\\PureBasic\\Projets\\Editeur d icones\\PureIconManager\\PureIconManger_Tool\\EXAMPLES\\Icone_barre_outils\\Folder ouvrir.png"
Extraire RCDATA "K:\\PureBasic\\Projets\\Editeur d icones\\PureIconManager\\PureIconManger_Tool\\EXAMPLES\\Icone_barre_outils\\Extraire.png"
Convertir RCDATA "K:\\PureBasic\\Projets\\Editeur d icones\\PureIconManager\\PureIconManger_Tool\\EXAMPLES\\Icone_barre_outils\\Convertir.png"
Favoris RCDATA "K:\\PureBasic\\Projets\\Editeur d icones\\PureIconManager\\PureIconManger_Tool\\EXAMPLES\\Icone_barre_outils\\Favoris.png"
Tools RCDATA "K:\\PureBasic\\Projets\\Editeur d icones\\PureIconManager\\PureIconManger_Tool\\EXAMPLES\\Icone_barre_outils\\Tools.png"
Aide RCDATA "K:\\PureBasic\\Projets\\Editeur d icones\\PureIconManager\\PureIconManger_Tool\\EXAMPLES\\Icone_barre_outils\\Aide.png"
Apropos RCDATA "K:\\PureBasic\\Projets\\Editeur d icones\\PureIconManager\\PureIconManger_Tool\\EXAMPLES\\Icone_barre_outils\\logo_PB.png"
Quit RCDATA "K:\\PureBasic\\Projets\\Editeur d icones\\PureIconManager\\PureIconManger_Tool\\EXAMPLES\\Icone_barre_outils\\exit_32x32.png"
// Les icônes
Icone_vierge RCDATA "K:\\PureBasic\\Projets\\Editeur d icones\\PureIconManager\\PureIconManger_Tool\\EXAMPLES\\Icone_barre_outils\\Icone_vierge.ico"
FlecheUp RCDATA "K:\\PureBasic\\Projets\\Editeur d icones\\PureIconManager\\PureIconManger_Tool\\EXAMPLES\\Icone_barre_outils\\ArrowUp.ico"
FlecheDown RCDATA "K:\\PureBasic\\Projets\\Editeur d icones\\PureIconManager\\PureIconManger_Tool\\EXAMPLES\\Icone_barre_outils\\ArrowDown.ico"
// la dll vide
Empy_dll RCDATA "K:\\PureBasic\\Projets\\Editeur d icones\\PureIconManager\\PureIconManger_Tool\\EXAMPLES\\Icone_barre_outils\\EmptyDll.pak"
// Définition des GUID
LANGUAGE LANG_NEUTRAL, SUBLANG_NEUTRAL
IID_IStorage RCDATA
{
11L, 0L, 192L, 1174405120L
// équivalent à DefineGUID(IID_IStorage, $0000000B, $0000, $0000, $C0, $00, $00, $00, $00, $00, $00, $46)
}
En fait j'ai mis le maximum de chose dans le fichier RC au lieu des datas de PB
Code : Tout sélectionner
#include "resource.h"
// ***************************************************************************
// **************************** Codes d'Erreurs ******************************
// offset_Table permet de commencer la stringtable avec l’id 1
#define offset_Table 1
#define Error_Code_No_Error 0 + offset_Table
#define Error_Code_No_Icon 1 + offset_Table
#define Error_Code_Unable_To_Allocate_Memory 2 + offset_Table
#define Error_Code_Unable_To_Allocate_Memory_For_File 3 + offset_Table
#define Error_Code_Unable_To_Create_File 4 + offset_Table
#define Error_Code_No_GroupNames 5 + offset_Table
#define Error_Code_Bad_Memory_Copy 6 + offset_Table
#define Error_Code_Bad_Parameter_Value 7 + offset_Table
#define Error_Code_Integrity 8 + offset_Table
#define Error_Code_No_Icon_Group Error_Code_Integrity
#define Error_Code_Reading_Writing_Over_LastMemoryFileAdress 9 + offset_Table
#define Error_Code_OFFSET_NULL_NE_File 10 + offset_Table
#define Error_Code_rnLength_NULL_NE_File 11 + offset_Table
#define Error_Code_DWORD_IMAGE_NT_SIGNATURE 12 + offset_Table
#define Error_Code_IMAGE_FILE_MACHINE_I386 13 + offset_Table
#define Error_Code_IMAGE_DOS_SIGNATURE 14 + offset_Table
#define Error_Code_rscTypes_Not_Null 15 + offset_Table
#define Error_Code_rscEndNames_Not_Null 16 + offset_Table
#define Error_Code_Unable_to_find_Id 17 + offset_Table
#define Error_Code_First_NameGroupe_buffer_Null 18 + offset_Table
#define Error_Code_Too_Many_GroupNames 19 + offset_Table
#define Error_Code_Format 20 + offset_Table
#define Error_Code_Format_Signature_MemIconDir 21 + offset_Table
#define Error_Code_Resource_Type_RT_ICON_lacking 22 + offset_Table
#define Error_Code_ICON_Number 23 + offset_Table
#define Error_Code_LoadLibraryEx 24 + offset_Table
#define Error_Code_EnumResourceNames 25 + offset_Table
#define Error_Code_FindResource 26 + offset_Table
#define Error_Code_LoadResource 27 + offset_Table
#define Error_Code_LockResource 28 + offset_Table
#define Error_Code_SizeofResource 29 + offset_Table
#define Error_Code_SetFilePointer 30 + offset_Table
#define Error_Code_ReadFile_Open 31 + offset_Table
#define Error_Code_CreateIcon_Failed 32 + offset_Table
#define Error_Code_Format_Signature_PNG 33 + offset_Table
#define Error_Code_Pointeur_Null 34 + offset_Table
#define Error_Code_Unable_To_Create_PB_Image 35 + offset_Table
#define Error_Bad_File_Name 36 + offset_Table
#define Error_Code_Unable_To_Create_Icone 37 + offset_Table
#define Error_Code_Icon_number_Position 38 + offset_Table
#define Error_Code_Format_Signature_IconDir 39 + offset_Table
#define Error_Code_Unable_To_Get_Icon_Info 40 + offset_Table
#define Error_Code_FileFormat_UnKnow 41 + offset_Table
#define Error_Code_ICON_Number_Integrity 42 + offset_Table
#define Error_RESOURCE_TABLE_rscAlignShift 43 + offset_Table
#define Error_Code_Writing_Ico_Header_File 44 + offset_Table
#define Error_Code_Segment_IHDR_attendu 45 + offset_Table
#define Error_Code_Writing_ICONDIRENTRY_To_File 46 + offset_Table
#define Error_Offset__Resource_Table_Null 47 + offset_Table
#define Error_Code_Bad_Datas_file_written 48 + offset_Table
#define Error_Code_Unable_To_unpack_PngImage 49 + offset_Table
#define Error_Code_Unable_To_Open_File 50 + offset_Table
#define Error_Code_IMAGE_PE_SIGNATURE 51 + offset_Table
#define Error_Code_Bad_File_Size_Or_No_File_Found 52 + offset_Table
#define Error_Code_API_ReaFile_Failure 53 + offset_Table
#define Error_Code_Format_ImageSize 54 + offset_Table
#define Error_Code_Format_ImageOffset 55 + offset_Table
#define Error_Code_Format_Ressource 56 + offset_Table
#define Error_Unable_to_Create_CompatibleDC 57 + offset_Table
#define Error_Unable_to_Create_Stream 58 + offset_Table
#define Error_Unable_to_Seek_StreamPointer 59 + offset_Table
#define Error_Code_Reading_Ico_Header_File 60 + offset_Table
#define Error_Unable_to_Read_StreamDatas 61 + offset_Table
#define Error_Unable_to_Get_BitmapInformation 62 + offset_Table
#define Error_Unable_to_Create_CompatibleBitmap 63 + offset_Table
#define Error_Bad_Pointer_Value 64 + offset_Table
#define Error_OS2_SIGNATURE 65 + offset_Table
#define Error_Code_EnumResourceTypes 66 + offset_Table
#define Error_Code_Resource_Type_RT_GROUP_ICON_lacking 67 + offset_Table
#define Error_Code_Unable_to_Update_Resource 68 + offset_Table
#define Error_Bad_File_Format 69 + offset_Table
#define Error_Bad_Parameter 70 + offset_Table
#define Error_Code_User_Stop_Enumeration 71 + offset_Table
#define Error_Code_Unable_To_Create_PB_ImageGadget_Icons 72 + offset_Table
#define Error_Code_Unable_To_Open_Ole32_dllFile 73 + offset_Table
#define Error_System 74 + offset_Table
#define Error_Unable_to_Write_StreamDatas 75 + offset_Table
LANGUAGE LANG_FRENCH, LOCALE_USER_DEFAULT
STRINGTABLE
{
Error_Code_No_Error, "Pas d'erreur détectée"
Error_Code_No_Icon, "Le fichier ne comporte pas d'icône"
Error_Code_Unable_To_Allocate_Memory, "Impossible d'allouer de la mémoire pour les opérations (erreur système)"
Error_Code_Unable_To_Allocate_Memory_For_File, "Impossible d'allouer de la mémoire pour le fichier (erreur système)"
Error_Code_Unable_To_Create_File, "Impossible de créer un fichier (erreur système)"
Error_Code_No_GroupNames, "Le fichier NE ne possède pas de noms de groupes d'icônes"
Error_Code_Bad_Memory_Copy, "Erreur de copie des données en mémoire (erreur système)"
Error_Code_Bad_Parameter_Value, "Mauvaise valeur d'un paramètre d'entrée d'une foncion (erreur interne)"
Error_Code_No_Icon_Group, "Le fichier n'a pas de groupe d'icônes"
Error_Code_Reading_Writing_Over_LastMemoryFileAdress, "Erreur de format (dépassement en lecture/écriture de la zone mémoire)"
Error_Code_OFFSET_NULL_NE_File, "Erreur de format du fichier ICL 16 bits (position des informations sur l'image)"
Error_Code_rnLength_NULL_NE_File, "Erreur de format du fichier ICL 16 bits (longueur nulle des données)"
Error_Code_DWORD_IMAGE_NT_SIGNATURE, "Erreur de format du fichier (signature NT absente du header)"
Error_Code_IMAGE_FILE_MACHINE_I386, "Erreur de format du fichier PE (identifiant 'MACHINE_I386' absent)"
Error_Code_IMAGE_DOS_SIGNATURE, "Erreur de format du fichier (signature MS-DOS absente)"
Error_Code_rscTypes_Not_Null, "Erreur de format du fichier ICL (mauvais identifiant de la ressource)"
Error_Code_rscEndNames_Not_Null, "Erreur de format du fichier ICL (mauvais identifiant de fin zone des noms)"
Error_Code_Unable_to_find_Id, "Erreur, Identifiant non trouvé"
Error_Code_First_NameGroupe_buffer_Null, "Erreur de format du fichier ICL (mauvais identifiant de noms de groupe)"
Error_Code_Too_Many_GroupNames, "Erreur de format du fichier ('RT_ICON' ou 'RT_ICON_GROUP')"
Error_Code_Format, "Erreur de format du fichier"
Error_Code_Format_Signature_MemIconDir, "Erreur de format du fichier (integrité du header)"
Error_Code_Resource_Type_RT_ICON_lacking, "Erreur, le fichier ne comporte pas d'icônes"
Error_Code_ICON_Number, "Erreur de format du fichier ICL (mauvais nombre d'icônes RT_ICON/RT_ICON_GROUP)"
Error_Code_LoadLibraryEx, "Erreur de chargement du fichier (resource)"
Error_Code_EnumResourceNames, "Erreur d'énumération (resource)"
Error_Code_FindResource, "Erreur de localisation (resource)"
Error_Code_LoadResource, "Erreur de chargement (resource)"
Error_Code_LockResource, "Erreur de chargement (resource)"
Error_Code_SizeofResource, "Erreur de taille (resource)"
Error_Code_SetFilePointer, "Erreur de déplacement du pointeur de fichier"
Error_Code_ReadFile_Open, "Erreur de lecture du fichier"
Error_Code_CreateIcon_Failed, "Impossible de créer l'icône"
Error_Code_Format_Signature_PNG, "Erreur de format du fichier (mauvais identifiant de l'image PNG)"
Error_Code_Pointeur_Null, "Erreur pointeur null"
Error_Code_Unable_To_Create_PB_Image, "Impossible de créer une image (erreur système)"
Error_Bad_File_Name, "Nom de fichier incorrect"
Error_Code_Unable_To_Create_Icone, "Impossible de créer une icône Vista"
Error_Code_Icon_number_Position, "Mauvais nombre d'icônes ou la position de l'icône est en dehors des indices"
Error_Code_Format_Signature_IconDir, "Erreur de format du fichier ICO (integrité du header)"
Error_Code_Unable_To_Get_Icon_Info, "impossible d'obtenir les information sur l'icône (erreur système)"
Error_Code_FileFormat_UnKnow, "Le Format du fichier ne correspond pas au format image attendu"
Error_Code_ICON_Number_Integrity, "Erreur de format du fichier (nombre d'icônes du groupe inférieur ou égal à 0)"
Error_RESOURCE_TABLE_rscAlignShift, "Erreur intégrité du header NE, mauvaise valeur du décalage"
Error_Code_Writing_Ico_Header_File, "Erreur d'écriture du fichier .ico (zone Header)"
Error_Code_Segment_IHDR_attendu, "Erreur de format du fichier (mauvais identifiant du segment 'IHDR')"
Error_Code_Writing_ICONDIRENTRY_To_File, "Erreur d'écriture du fichier .ico (zone ICONDIRENTRY)"
Error_Offset__Resource_Table_Null, "Erreur intégrité du header NE, l'offset de la table des ressource est null"
Error_Code_Bad_Datas_file_written, "Erreur d'écriture des données dans le fichier (erreur système)"
Error_Code_Unable_To_unpack_PngImage, "Impossible de décompresser l'icône Vista"
Error_Code_Unable_To_Open_File, "Erreur d'ouverture du fichier (erreur système)"
Error_Code_IMAGE_PE_SIGNATURE, "Erreur de format du fichier PE (mauvaise signature)"
Error_Code_Bad_File_Size_Or_No_File_Found, "Erreur sur la taille du fichier ou fichier inexistant"
Error_Code_API_ReaFile_Failure, "Impossible de charger le fichier en mémoire"
Error_Code_Format_ImageSize, "Erreur de format du fichier (taille de l'image)"
Error_Code_Format_ImageOffset, "Erreur de format du fichier (position de l'image dans le fichier)"
Error_Code_Format_Ressource, "Erreur de format du fichier .ico (taille de la ressource)"
Error_Unable_to_Create_CompatibleDC, "Impossible de créer un contexte de périphérique (erreur système)"
Error_Unable_to_Create_Stream, "Impossible de créer un stream (erreur système)"
Error_Unable_to_Seek_StreamPointer, "Impossible de déplacer le pointeur de stream"
Error_Code_Reading_Ico_Header_File, "Impossible de déplacer le pointeur de stream (erreur système)"
Error_Unable_to_Read_StreamDatas, "Impossible de lire les données depuis le stream"
Error_Unable_to_Get_BitmapInformation, "Impossible d'obtenir les informations du bitmap"
Error_Unable_to_Create_CompatibleBitmap, "Impossible de créer un bitmap (erreur système)"
Error_Bad_Pointer_Value, "Mauvaise valeur de pointeur"
Error_OS2_SIGNATURE, "Erreur intégrité du header NE, signature OS2 absente"
Error_Code_EnumResourceTypes, "Erreur d'énumération des types (resource)"
Error_Code_Resource_Type_RT_GROUP_ICON_lacking, "Le fichier ne comporte pas de groupes d'icône"
Error_Code_Unable_to_Update_Resource, "impossible de mettre à jour la resource"
Error_Bad_File_Format, "Le format du fichier est incorrect"
Error_Bad_Parameter, "Un des paramètre de la fonction est incorrect"
Error_Code_User_Stop_Enumeration, "La callback d'énumération a été arrêtée par l'utilisateur"
Error_Code_Unable_To_Create_PB_ImageGadget_Icons, "Impossible de créer une la fenêtre contenant les icônes (erreur système)"
Error_Code_Unable_To_Open_Ole32_dllFile, "Impossible d'ouvrir le fichier système 'Ole32.dll'"
Error_System, "Erreur système indéterminée"
Error_Unable_to_Write_StreamDatas, "Impossible d'écrire les données dans le stream"
}
LANGUAGE LANG_ENGLISH, SUBLANG_NEUTRAL
STRINGTABLE
{
Error_Code_No_Error, "No error detected"
Error_Code_No_Icon, "The file has no icon"
Error_Code_Unable_To_Allocate_Memory, "Unable to allocate memory (system error)"
Error_Code_Unable_To_Allocate_Memory_For_File, "Unable to allocate memory for file operations (system error)"
Error_Code_Unable_To_Create_File, "Unable to create file (system error)"
Error_Code_No_GroupNames, "NE file has no icons groups names"
Error_Code_Bad_Memory_Copy, "Copy memory data error (system error)"
Error_Code_Bad_Parameter_Value, "Bad parameter value (internal error)"
Error_Code_No_Icon_Group, "The file has no icons groups"
Error_Code_Reading_Writing_Over_LastMemoryFileAdress, "Format error (read/write memory overflow)"
Error_Code_OFFSET_NULL_NE_File, "ICL NE file format error (bad image information position)"
Error_Code_rnLength_NULL_NE_File, "ICL NE file format error (size data is equal to null)"
Error_Code_DWORD_IMAGE_NT_SIGNATURE, "File format error (NT signature lacking - header file)"
Error_Code_IMAGE_FILE_MACHINE_I386, "PE file format error ('MACHINE_I386' identifier lacking)"
Error_Code_IMAGE_DOS_SIGNATURE, "File format error (MS-DOS signature lacking)"
Error_Code_rscTypes_Not_Null, "ICL file format error (bad resource identifier)"
Error_Code_rscEndNames_Not_Null, "ICL file format error (bad identifier of end names area)"
Error_Code_Unable_to_find_Id, "Error, identifier not found"
Error_Code_First_NameGroupe_buffer_Null, "ICL file format error (bad identifier of group names)"
Error_Code_Too_Many_GroupNames, "File format error ('RT_ICON' or 'RT_ICON_GROUP')"
Error_Code_Format, "File format error"
Error_Code_Format_Signature_MemIconDir, "File format error (header integrity)"
Error_Code_Resource_Type_RT_ICON_lacking, "The file has no icons"
Error_Code_ICON_Number, "ICL file format error (bad icons number RT_ICON/RT_ICON_GROUP)"
Error_Code_LoadLibraryEx, "Loading resource file error"
Error_Code_EnumResourceNames, "Enumeration error (resource)"
Error_Code_FindResource, "Unable to find resource"
Error_Code_LoadResource, "Unable to load resource"
Error_Code_LockResource, "Unable to find memory resource adress"
Error_Code_SizeofResource, "Resource size error"
Error_Code_SetFilePointer, "Pointer move error"
Error_Code_ReadFile_Open, "Read file error"
Error_Code_CreateIcon_Failed, "Unable to create icon"
Error_Code_Format_Signature_PNG, "File format error (bad PNG image identifier)"
Error_Code_Pointeur_Null, "Bad pointer value (null)"
Error_Code_Unable_To_Create_PB_Image, "Unable to create an image (system error)"
Error_Bad_File_Name, "Bad File name"
Error_Code_Unable_To_Create_Icone, "Unable to create a Vista icon"
Error_Code_Icon_number_Position, "Bad icons number or icon position outside indices"
Error_Code_Format_Signature_IconDir, "ICO file format error (header integrity)"
Error_Code_Unable_To_Get_Icon_Info, "Unable to get icon informations (system error)"
Error_Code_FileFormat_UnKnow, "File format doesn't match with awaited image format"
Error_Code_ICON_Number_Integrity, "File format error (icons number from group is less or equal to 0)"
Error_RESOURCE_TABLE_rscAlignShift, "NE header integrity error (bad offset value)"
Error_Code_Writing_Ico_Header_File, "Write ICO file error (Header)"
Error_Code_Segment_IHDR_attendu, "File format error (bad 'IHDR' chunk identifier)"
Error_Code_Writing_ICONDIRENTRY_To_File, "Write ICO file error (ICONDIRENTRY area)"
Error_Offset__Resource_Table_Null, "NE header integrity error (offset of resource table is null)"
Error_Code_Bad_Datas_file_written, "Writing datas file error (system error)"
Error_Code_Unable_To_unpack_PngImage, "Unable to unpack Vista icon"
Error_Code_Unable_To_Open_File, "Opening file error (system error)"
Error_Code_IMAGE_PE_SIGNATURE, "PE file format error (bad signature)"
Error_Code_Bad_File_Size_Or_No_File_Found, "File size error or file doesn't exist"
Error_Code_API_ReaFile_Failure, "Unable to load file in memory"
Error_Code_Format_ImageSize, "File format error (image size)"
Error_Code_Format_ImageOffset, "File format error (bad image position)"
Error_Code_Format_Ressource, "ICO file format error (resource size)"
Error_Unable_to_Create_CompatibleDC, "Unable to create a device context (system error)"
Error_Unable_to_Create_Stream, "Unable to create a stream (system error)"
Error_Unable_to_Seek_StreamPointer, "Unable to adjust stream seek pointer"
Error_Code_Reading_Ico_Header_File, "Unable to adjust ICO stream seek pointer(system error)"
Error_Unable_to_Read_StreamDatas, "Unable to read stream datas"
Error_Unable_to_Get_BitmapInformation, "Unable to get bitmap informations"
Error_Unable_to_Create_CompatibleBitmap, "Unable to create bitmap (system error)"
Error_Bad_Pointer_Value, "Bad pointeur value"
Error_OS2_SIGNATURE, "NE header Integrity error (OS2 signature OS2 lacking"
Error_Code_EnumResourceTypes, "Enumeration types error (resource)"
Error_Code_Resource_Type_RT_GROUP_ICON_lacking, "The file has no icons groups"
Error_Code_Unable_to_Update_Resource, "Unable to update resource"
Error_Bad_File_Format, "Bad file format"
Error_Bad_Parameter, "Bad function parameter"
Error_Code_User_Stop_Enumeration, "Enumeration callback has been stopped.by the user"
Error_Code_Unable_To_Create_PB_ImageGadget_Icons, "Unable to create icons window (system error)"
Error_Code_Unable_To_Open_Ole32_dllFile, "Unable to open 'Ole32.dll' file"
Error_System, "Unknown system error"
Error_Unable_to_Write_StreamDatas, "Unable to write strem datas"
}
// ***************************************************************************
// ************************ Fenêtre Apropos de *******************************
// offset_Table permet de commencer la stringtable avec l’id 10
#define offset_Table_About (16*9)
LANGUAGE LANG_NEUTRAL, SUBLANG_NEUTRAL
STRINGTABLE
{
1 + offset_Table_About, "http://www.purebasic.com/french/index.php3"
2 + offset_Table_About, "http://www.purebasic.fr/english/viewtopic.php\?t=31381"
3 + offset_Table_About, "ARIAL"
}
LANGUAGE LANG_FRENCH, SUBLANG_NEUTRAL
STRINGTABLE
{
1 + offset_Table_About, "A propos de PureIconManager "
2 + offset_Table_About, "PureIconManager 1.00 (2009) pour Microsoft Windows"
3 + offset_Table_About, "Créé par Denis Labarre (Denis sur les forums PureBasic français et anglais)"
4 + offset_Table_About, "PureIconManager a été développé avec PureBasic 4.30"
5 + offset_Table_About, "PureIconManager utilise la librairie opensource “Nexus-library“ de Srod"
}
LANGUAGE LANG_ENGLISH, SUBLANG_NEUTRAL
STRINGTABLE
{
1 + offset_Table_About, "About PureIconManager "
2 + offset_Table_About, "PureIconManager 1.00 (2009) for Microsoft Windows"
3 + offset_Table_About, "Created by Denis Labarre (Denis on french/english PureBasic forums)"
4 + offset_Table_About, "PureIconManager has been written with PureBasic 4.30"
5 + offset_Table_About, "PureIconManager uses opensource “Nexus-library“ from Srod"
}
// ***************************************************************************
// ***************************************************************************
// ***************************************************************************
// ************************ ComboBox filtres fichiers ************************
// offset_Table permet de commencer la stringtable avec l’id 20
#define offset_Table_Filtre (16*19)
LANGUAGE LANG_NEUTRAL, SUBLANG_NEUTRAL
STRINGTABLE
{
1 + offset_Table_Filtre, "*.cpl;*.dll;*.exe;*.ico;*.icl;*.ocx;"
2 + offset_Table_Filtre, "*.cpl"
3 + offset_Table_Filtre, "*.dll"
4 + offset_Table_Filtre, "*.exe"
5 + offset_Table_Filtre, "*.ico"
6 + offset_Table_Filtre, "*.icl"
7 + offset_Table_Filtre, "*.ocx"
8 + offset_Table_Filtre, "*.*"
}
LANGUAGE LANG_FRENCH, SUBLANG_NEUTRAL
STRINGTABLE
{
1 + offset_Table_Filtre, "Tous formats d'icônes"
2 + offset_Table_Filtre, "Fichiers cpl (*.cpl)"
3 + offset_Table_Filtre, "Fichiers dll (*.dll)"
4 + offset_Table_Filtre, "Fichiers exe (*.exe)"
5 + offset_Table_Filtre, "Fichiers ico (*.ico)"
6 + offset_Table_Filtre, "Fichiers icl (*.icl)"
7 + offset_Table_Filtre, "Fichiers ocx (*.ocx)"
8 + offset_Table_Filtre, "Tous fichiers (*.*)"
}
LANGUAGE LANG_ENGLISH, SUBLANG_NEUTRAL
STRINGTABLE
{
1 + offset_Table_Filtre, "all icon formats"
2 + offset_Table_Filtre, "cpl file(*.cpl)"
3 + offset_Table_Filtre, "dll file (*.dll)"
4 + offset_Table_Filtre, "exe file (*.exe)"
5 + offset_Table_Filtre, "ico file (*.ico)"
6 + offset_Table_Filtre, "icl file (*.icl)"
7 + offset_Table_Filtre, "ocx file (*.ocx)"
8 + offset_Table_Filtre, "all file formats (*.*)"
}
// ***************************************************************************
// ***************************************************************************
// ***************************************************************************
// **************************** Messages divers ******************************
// offset_Table permet de commencer la stringtable avec l’id 30
#define offset_Table_Messages_divers (16*29)
#define Error_String 0 + offset_Table_Messages_divers
#define PureIconManager_version 1 + offset_Table_Messages_divers
LANGUAGE LANG_FRENCH, SUBLANG_NEUTRAL
STRINGTABLE
{
Error_String, "Erreur "
}
LANGUAGE LANG_ENGLISH, SUBLANG_NEUTRAL
STRINGTABLE
{
Error_String , "Error "
}
// ***************************************************************************
// ***************************************************************************
// ***************************************************************************
// **************************** Messages Neutres *****************************
// offset_Table permet de commencer la stringtable avec l’id 80
#define offset_Table_Messages_neutres (16*79)
#define OriginProc_ExplorerList 0 + offset_Table_Messages_neutres
#define StgCreateStorageEx OriginProc_ExplorerList + 1
#define IsAppThemed StgCreateStorageEx + 2
#define ReBarWindow32 IsAppThemed + 3
#define Msimg32_dll ReBarWindow32 + 4
#define Kernel32_dll Msimg32_dll + 5
#define Uxtheme_dll Kernel32_dll + 6
#define Ole32_dll Kernel32_dll + 7
#define Arial Ole32_dll + 8
#define Courrier_New Arial + 9
#define Times_New_Roman Courrier_New +10
#define TAHOMA Times_New_Roman + 11
#define HeapSetInformation TAHOMA + 12
#define AlphaBlend HeapSetInformation + 13
#define OpenThemeData AlphaBlend + 14
LANGUAGE LANG_NEUTRAL, SUBLANG_NEUTRAL
STRINGTABLE
{
OriginProc_ExplorerList, "OriginProc_ExplorerList"
StgCreateStorageEx, "StgCreateStorageEx"
IsAppThemed, "IsAppThemed"
ReBarWindow32, "ReBarWindow32"
Msimg32_dll, "Msimg32.dll"
Kernel32_dll, "Kernel32.dll"
Uxtheme_dll, "Uxtheme.dll"
Ole32_dll, "Ole32.dll"
Arial, "Arial"
Courrier_New, "Courrier New"
Times_New_Roman, "Times New Roman"
TAHOMA, "TAHOMA"
HeapSetInformation, "HeapSetInformation"
AlphaBlend, "AlphaBlend"
OpenThemeData, "OpenThemeData"
}
Code : Tout sélectionner
Procedure A_Propos_De()
;///////////////////////////////////////////////////////////////////////////////////////////////////
;//
;// FONCTION: A_Propos_De()
;//
;// BUT: Afficher la boîte de dialogue à propos de
;//
;// PARAMS: aucun
;//
;// RETOURNE: Pas de valeur de retour
;//
;///////////////////////////////////////////////////////////////////////////////////////////////////
;// mémorise l'id de l'image resource
Protected img
;// mémorise la largeur du texte formatée par la police
Protected largeur
;// mémorise l'EventGadget
Protected eventGadget
;// mémorise la chaine de la resource
Protected Texte$
;// mémorise l'identifiant MS de la langue
Protected Langue_id
;// mémorise l'instance du fichier
Protected hinst
hinst = GetModuleHandle_(0)
If hinst = 0
ProcedureReturn
EndIf
If PRIMARYLANGID(GetUserDefaultLangID_()) = #LANG_FRENCH
Langue_id = MAKELANGID(#LANG_FRENCH, #SUBLANG_FRENCH)
Else
Langue_id = MAKELANGID(#LANG_ENGLISH, #SUBLANG_ENGLISH_UK)
EndIf
Texte$ = Load_Resource_String(#IDS_About, Langue_id, #PB_Unicode)
;// mémorise l'image
If OpenWindow(#A_Propos_De, 0, 0, 518+2, 350, Texte$ + StrF(PIM_Version(), 2), #PB_Window_SystemMenu|#PB_Window_ScreenCentered, WindowID(#MainWindow))
DisableWindowEx(#MainWindow)
ButtonGadget(#Button_Ok_About, WindowWidth(#A_Propos_De)-80, WindowHeight(#A_Propos_De)-40, 50, 20, "Ok", #PB_Button_Default)
If CreateImage(#Image_A_propos_de, WindowWidth(#A_Propos_De), 83, 16)
If StartDrawing(ImageOutput(#Image_A_propos_de))
Box(0,0, WindowWidth(#A_Propos_De), WindowHeight(#A_Propos_De), #Red)
img = LoadImage_(hinst, 1, #IMAGE_BITMAP , 518, 80, 0)
If img
DrawImage(img, 1, 1)
DeleteObject_(img)
EndIf
StopDrawing()
ImageGadget(#ImageGadget_About, 0, 0, 0, 0, ImageID(#Image_A_propos_de))
EndIf
EndIf
Texte$ = Load_Resource_String(#IDS_About_Font, MAKELANGID(#LANG_NEUTRAL, #SUBLANG_NEUTRAL), #PB_Unicode)
LoadFont(#Font_A_Propos_De, Texte$, 10, #PB_Font_Italic)
Texte$ = Load_Resource_String(#IDS_PIM_Version, Langue_id, #PB_Unicode)
TextGadget(#Texte_A_Propos_De, 0, 110, WindowWidth(#A_Propos_De), 30, Texte$, #PB_Text_Center)
Texte$ = Load_Resource_String(#IDS_Creation, Langue_id, #PB_Unicode)
TextGadget(#Texte_A_Propos_De_1, 0, 135, WindowWidth(#A_Propos_De), 30, Texte$, #PB_Text_Center)
Texte$ = Load_Resource_String(#IDS_PB, Langue_id, #PB_Unicode)
TextGadget(#Texte_A_Propos_De_2, 0, 195, WindowWidth(#A_Propos_De), 20, Texte$, #PB_Text_Center)
Texte$ = Load_Resource_String(#IDS_URL_PB, MAKELANGID(#LANG_NEUTRAL, #SUBLANG_NEUTRAL), #PB_Unicode)
HyperLinkGadget(#HyperLink_A_Propos_De_2, 115, GadgetY(#Texte_A_Propos_De_2)+20, WindowWidth(#A_Propos_De), 20, Texte$, #Red)
Texte$ = Load_Resource_String(#IDS_Nexus, Langue_id, #PB_Unicode)
TextGadget(#Texte_A_Propos_De_3, 0, GadgetY(#HyperLink_A_Propos_De_2)+35, WindowWidth(#A_Propos_De), 20, Texte$, #PB_Text_Center)
Texte$ = Load_Resource_String(#IDS_URL_Nexus, MAKELANGID(#LANG_NEUTRAL, #SUBLANG_NEUTRAL), #PB_Unicode)
HyperLinkGadget(#HyperLink_A_Propos_De_3, 75, GadgetY(#Texte_A_Propos_De_3)+20, WindowWidth(#A_Propos_De), 20, Texte$, #Red)
SetGadgetFontEX(#Button_Ok_About, #Font_A_Propos_De)
SetGadgetFontEX(#Texte_A_Propos_De, #Font_A_Propos_De)
SetGadgetFontEX(#Texte_A_Propos_De_1, #Font_A_Propos_De)
SetGadgetFontEX(#Texte_A_Propos_De_2, #Font_A_Propos_De)
SetGadgetFontEX(#Texte_A_Propos_De_3, #Font_A_Propos_De)
SetGadgetFontEX(#HyperLink_A_Propos_De_2, #Font_A_Propos_De)
SetGadgetFontEX(#HyperLink_A_Propos_De_3, #Font_A_Propos_De)
;// calcule la taille pour la chaine et positionne le gadget en x
Texte$ = Load_Resource_String(#IDS_URL_PB, MAKELANGID(#LANG_NEUTRAL, #SUBLANG_NEUTRAL), #PB_Unicode)
If IsFont(#Font_A_Propos_De)
largeur = GetGadgetTextWidth(#Font_A_Propos_De, Texte$)
If largeur <> -1 And IsGadget(#HyperLink_A_Propos_De_2)
ResizeGadget(#HyperLink_A_Propos_De_2, (WindowWidth(#A_Propos_De) - largeur)/2, #PB_Ignore, #PB_Ignore, #PB_Ignore)
EndIf
EndIf
;// calcule la taille pour la chaine et positionne le gadget en x
Texte$ = Load_Resource_String(#IDS_URL_Nexus, MAKELANGID(#LANG_NEUTRAL, #SUBLANG_NEUTRAL), #PB_Unicode)
If IsFont(#Font_A_Propos_De)
largeur = GetGadgetTextWidth(#Font_A_Propos_De, Texte$)
If largeur <> -1 And IsGadget(#HyperLink_A_Propos_De_3)
ResizeGadget(#HyperLink_A_Propos_De_3, (WindowWidth(#A_Propos_De) - largeur)/2, #PB_Ignore, #PB_Ignore, #PB_Ignore)
EndIf
EndIf
SetGadgetColorEX(#Texte_A_Propos_De, #PB_Gadget_FrontColor, #Blue)
SetGadgetColorEX(#Texte_A_Propos_De_1, #PB_Gadget_FrontColor, #Blue)
SetGadgetColorEX(#Texte_A_Propos_De_2, #PB_Gadget_FrontColor, $1F71AD)
SetGadgetColorEX(#Texte_A_Propos_De_3, #PB_Gadget_FrontColor, $1F71AD)
SetGadgetColorEX(#HyperLink_A_Propos_De_2, #PB_Gadget_FrontColor, #Black)
SetGadgetColorEX(#HyperLink_A_Propos_De_3, #PB_Gadget_FrontColor, #Black)
Repeat
Select WaitWindowEvent()
Case #PB_Event_Gadget
eventGadget = EventGadget()
Select eventGadget
Case #HyperLink_A_Propos_De_2
Texte$ = Load_Resource_String(#IDS_URL_PB, MAKELANGID(#SUBLANG_NEUTRAL, #LANG_NEUTRAL), #PB_Unicode)
If Len(Texte$ )
RunProgram( Texte$)
EndIf
Case #HyperLink_A_Propos_De_3
Texte$ = Load_Resource_String(#IDS_URL_Nexus, MAKELANGID(#SUBLANG_NEUTRAL, #LANG_NEUTRAL), #PB_Unicode)
If Len(Texte$ )
RunProgram( Texte$)
EndIf
Case #Button_Ok_About
Break
EndSelect
Case #PB_Event_CloseWindow
If EventWindow() = #A_Propos_De
Break
EndIf
EndSelect
ForEver
;détruit les gadget, font etc
FreeImageEX(#Image_A_propos_de)
FreeFontEX(#Font_A_Propos_De)
FreeGadgetEX(#ImageGadget_About)
FreeGadgetEX(#Button_Ok_About)
FreeGadgetEX(#Texte_A_Propos_De)
FreeGadgetEX(#Texte_A_Propos_De_1)
FreeGadgetEX(#Texte_A_Propos_De_2)
FreeGadgetEX(#Texte_A_Propos_De_3)
FreeGadgetEX(#HyperLink_A_Propos_De_2)
FreeGadgetEX(#HyperLink_A_Propos_De_3)
;// ferme la fenêtre à propos de
CloseWindow(#A_Propos_De)
;// réactive la fenêtre principale
EnableWindowEx(#MainWindow)
SetActiveWindow(#MainWindow)
EndIf
EndProcedure
avec un éditeur de ressources, on a ceci

Dernière modification par Anonyme2 le jeu. 03/sept./2009 18:35, modifié 1 fois.
- Kwai chang caine
- Messages : 6992
- Inscription : sam. 23/sept./2006 18:32
- Localisation : Isere
Baaaahhh !!!!! j'vais p'tete pas oser apres tout ce que tu m'aideJe sais, tu vas me dire que c'est une usine à gaz
Mais tu avouera quand meme que c'est pas les premieres paroles que l'on prononce en venant au monde
Je te remercie beaucoup de toutes ces explications
Je vais jeter un oeil a ça lundi, et si par miracle j'ai encore des questions
Je me permettrais de les poser
Ces ressources j'en avais encore jamais entendu parler, mais c'est quand meme un truc de ouf
Encore milles merci, et bon WE
- Kwai chang caine
- Messages : 6992
- Inscription : sam. 23/sept./2006 18:32
- Localisation : Isere
Je comptais regarder ça lundi...mais ça me travaille le GODIWOKE 
En fait, je voudrais incorporer des fichiers textes en ressources dans un EXE.
Je le fais en ressources et non pas en include a cause de VB qui sait jamais rien faire comme les autres
Bon cette fois...j'vais pas me plaindre y sait faire comme ses camarades donc je saute sur l'ocase
Donc, j'inclue les ressources grace a IMPORT/ENDIMPORT (Merci GNOZAL et TsSoft
), jusque la .......... tout y baigne dans la choucroute 
Apres je les enumere (merci DENIS/SHARDIK/EESAU
), les extrait (merci DROOPY
), mais c'est la que y'a couille dans le "Froumgie" 
Quand je les inclue, je leur donne un nom de ressource, et je me suis apperçu que le compilateur mettait ce nom de ressources en majuscule
Donc je perd la casse du nom de mon fichier
Et le deuxieme probleme, c'est que je les extrait mais je ne sais pas ou ???
Alors une idée a germée dans le bidet qui me sert de tete
Si j'incorporais un genre de table dans le RES, qui me donne la casse du fichier et aussi l'endroit ou il doit etre extrait
Aussitot dit....... aussitot pas fait
Car KCC, il a les idées, mais jamais les connaissances qui sont normalement livrées avec
J'ai donc essayé de mixer les fichiers et les STRINGTABLES comme ça :
ou comme ça
Mais ça marche pas 
Apres ......j'ai trouvé un code sui ecrivait ça, et que j'ai vu que tu utilise aussi :
Car il faut dire que sur le WEB y'a pas vraiment grand chose qui parle de tout ce que l'on peut ecrire dans un fichier RC
J'ai donc pensé a pouvoir ecrire ça :
Alors je me suis dit, que c'est surement la methode pour mixer texte et fichier dans le meme RES 
Si je met la dedans, la casse et le chemin du fichier a extraire, c'est bingo et "ounegologolo ce soir dans la case"
Voila voila, les conclusions de toutes les recherches de KCC, pour le moment.
J'aurais voulu connaitre ton avis expert sur ma demarche.
Comment aurait tu fait si tu avait le meme besoin que "moi-meme" ???
Aurais tu une methode plus simple ????
Ou KCC pour la premiere fois il a décroché le "Golo", ...Hruuuummm...je veux dire le grot lot
En fait, je voudrais incorporer des fichiers textes en ressources dans un EXE.
Je le fais en ressources et non pas en include a cause de VB qui sait jamais rien faire comme les autres
Bon cette fois...j'vais pas me plaindre y sait faire comme ses camarades donc je saute sur l'ocase
Donc, j'inclue les ressources grace a IMPORT/ENDIMPORT (Merci GNOZAL et TsSoft
Apres je les enumere (merci DENIS/SHARDIK/EESAU
Quand je les inclue, je leur donne un nom de ressource, et je me suis apperçu que le compilateur mettait ce nom de ressources en majuscule
Donc je perd la casse du nom de mon fichier
Et le deuxieme probleme, c'est que je les extrait mais je ne sais pas ou ???
Alors une idée a germée dans le bidet qui me sert de tete
Si j'incorporais un genre de table dans le RES, qui me donne la casse du fichier et aussi l'endroit ou il doit etre extrait
Aussitot dit....... aussitot pas fait
Car KCC, il a les idées, mais jamais les connaissances qui sont normalement livrées avec
J'ai donc essayé de mixer les fichiers et les STRINGTABLES comme ça :
Code : Tout sélectionner
RCDATA
BEGIN
Fichier1 "Fichier1.txt"
Fichier2 "Fichier2.txt"
Fichier3 "Fichier3.txt"
Fichier4 "Fichier4.txt"
Fichier5 "Fichier5.txt"
END
STRINGTABLE
BEGIN
0 "FICHIER1=c:\Fichier1.txt"
1 "FICHIER2=c:\Winnt\Fichier2.txt"
ENDCode : Tout sélectionner
Fichier1 RCDATA "Fichier1.txt"
Fichier2 RCDATA "Fichier2.txt"
Fichier3 RCDATA "Fichier3.txt"
Fichier4 RCDATA "Fichier4.txt"
Fichier5 RCDATA "Fichier5.txt"
STRINGTABLE
BEGIN
0 "FICHIER1=c:\Fichier1.txt"
1 "FICHIER2=c:\Winnt\Fichier2.txt"
ENDApres ......j'ai trouvé un code sui ecrivait ça, et que j'ai vu que tu utilise aussi :
Code : Tout sélectionner
Texte RCDATA {"Le texte que l'on veut ecrire"}J'ai donc pensé a pouvoir ecrire ça :
Code : Tout sélectionner
FICHIER1 RCDATA {"c:\Fichier1.txt"}
FICHIER2 RCDATA {"c:\Winnt\Fichier2.txt"}Si je met la dedans, la casse et le chemin du fichier a extraire, c'est bingo et "ounegologolo ce soir dans la case"
Code : Tout sélectionner
Fichier1 RCDATA "Fichier1.txt"
Fichier2 RCDATA "Fichier2.txt"
FICHIER1 RCDATA {"c:\Fichier1.txt"}
FICHIER2 RCDATA {"c:\Winnt\Fichier2.txt"}J'aurais voulu connaitre ton avis expert sur ma demarche.
Comment aurait tu fait si tu avait le meme besoin que "moi-meme" ???
Aurais tu une methode plus simple ????
Ou KCC pour la premiere fois il a décroché le "Golo", ...Hruuuummm...je veux dire le grot lot
J'ai utilisé VBin2_Lib y'a qques mois.
Un programme indépendant (fait en PB) permet de créer un conteneur BIN sécurisé, ensuite l'appel des ressources se fait simplement en PB via sa Lib.
http://www.reelmediaproductions.com/pb
j'en avait été bien satisfait
Un programme indépendant (fait en PB) permet de créer un conteneur BIN sécurisé, ensuite l'appel des ressources se fait simplement en PB via sa Lib.
http://www.reelmediaproductions.com/pb
j'en avait été bien satisfait
~~~~Règles du forum ~~~~
⋅.˳˳.⋅ॱ˙˙ॱ⋅.˳Ar-S ˳.⋅ॱ˙˙ॱ⋅.˳˳.⋅
W11x64 PB 6.x
Section HORS SUJET : ICI
LDV MULTIMEDIA : Dépannage informatique & mes Logiciels PB
UPLOAD D'IMAGES : Uploader des images de vos logiciels
⋅.˳˳.⋅ॱ˙˙ॱ⋅.˳Ar-S ˳.⋅ॱ˙˙ॱ⋅.˳˳.⋅
W11x64 PB 6.x
Section HORS SUJET : ICI
LDV MULTIMEDIA : Dépannage informatique & mes Logiciels PB
UPLOAD D'IMAGES : Uploader des images de vos logiciels
Laisses tomber les stringtable, la bonne méthode c'est les RCDATA.
Dans l'exemple que j'ai posté des RCDATA en fichier RC, j'ai incorporé un fichier dll en RCDATA puis je l'extrait (je l'ai même compressé ce qui me fait gagner beaucoup de place).
Alors voilà la ligne du fichier RC, j'utilise un identifiant numérique, c'est préférable que d'utiliser une chaine pour des accès rapides (cf MS)
le mot define permet de définir un identifiant numérique auquel je donne une valeur, par exemple 10 pour le premier puis 11, 12 etc puis on incorpore les fichiers (met les chemins complets et il faut doubler le \
j'ai utilisé la langue et sous langue neutre mais si on ne met pas cette ligne, ça marchera et c'est ces langues neutres qui seront utilisées.
Moi pour inclure un fichier rc, j'utilise dans l'IDE PB (je n'utilise pas JAPBE) options du compilateur/ l'onglet ressource et j'ajoute mes fichiers rc car j'ai séparé les différents types pour m'y retrouver plus facilement.
Maintenant le code pour "extraire le fichier" et dans l'exemple pour créer un fichier sur le disque.
J'ai créé un fichier exe avec PB sans aucun code mais je lui ai adjoint avec l'ide un fichier rc qui lui ajoute en ressource 3 fichiers texte, voici le code du fichier rc (ne pas enregistre avec PB ... )
je met le fichier exe et le fichier rc en lien dans un zip, les fichiers s'appellent KCK_Test.rc et KCK_test.exe.
Voilà le code d'essai, il énumère l'exe (RC_DATA) et ouvre une boite de dialogue pour enregistrer les 3 fichiers.
Les 3 fichiers texte ont les tailles suivantes
Fichier 1 : 29 548 octets
Fichier 2 : 3 039 octets
Fichier 3 : 126 976 octets
Ce qui est important c'est que les identifiants #Fichier1 etc aient les mêmes valeurs dans le fichier rc et dans le fichier PB
Si tu veux utiliser des identifiant alphanumériques, fais-le mais ça n'apporte pas grand chose sauf si tu veux conserver un nom de fichier et encore, je ne sais pas quels caractères sont acceptés (cas du stockage du chemin), c'est mieux de définir en RC_data le nom complet du fichier puis ensuite mettre le fichier et la même chose pour les fichiers suivant.
Le code fonctionne, je l'ai testé
Tu devras changer le chemin du fichier exe qui est en lien pour l'adapter à ta machine.
Voici le fichier zip
Fichier KCK
Dans l'exemple que j'ai posté des RCDATA en fichier RC, j'ai incorporé un fichier dll en RCDATA puis je l'extrait (je l'ai même compressé ce qui me fait gagner beaucoup de place).
Alors voilà la ligne du fichier RC, j'utilise un identifiant numérique, c'est préférable que d'utiliser une chaine pour des accès rapides (cf MS)
le mot define permet de définir un identifiant numérique auquel je donne une valeur, par exemple 10 pour le premier puis 11, 12 etc puis on incorpore les fichiers (met les chemins complets et il faut doubler le \
j'ai utilisé la langue et sous langue neutre mais si on ne met pas cette ligne, ça marchera et c'est ces langues neutres qui seront utilisées.
Code : Tout sélectionner
LANGUAGE LANG_NEUTRAL, SUBLANG_NEUTRAL
#define Fichier1 10
#define Fichier2 Fichier1 + 1
#define Fichier3 Fichier1 + 2
#define Fichier4 Fichier1 + 3
#define Fichier5 Fichier1 + 4
RCDATA "Fichier1.txt"
Fichier2 RCDATA "RCDATA "C:\\PureBaFichier2.txt"
Fichier3 RCDATA "C:\\Fichier3.txt"
Fichier4 RCDATA "C:\\Fichier4.txt"
Fichier5 RCDATA "C:\\Fichier5.txt" Maintenant le code pour "extraire le fichier" et dans l'exemple pour créer un fichier sur le disque.
J'ai créé un fichier exe avec PB sans aucun code mais je lui ai adjoint avec l'ide un fichier rc qui lui ajoute en ressource 3 fichiers texte, voici le code du fichier rc (ne pas enregistre avec PB ... )
Code : Tout sélectionner
//#include "resource.h"
//LANGUAGE LANG_NEUTRAL, SUBLANG_NEUTRAL
#define Fichier1 10
#define Fichier2 11
#define Fichier3 12
Fichier1 RCDATA "C:\\users\jj\\Desktop\\quickhelp.txt"
Fichier2 RCDATA "C:\\users\jj\\Desktop\\traduc.txt"
Fichier3 RCDATA "C:\\users\jj\\Desktop\\libpng-1.2.26beta01.txt"Voilà le code d'essai, il énumère l'exe (RC_DATA) et ouvre une boite de dialogue pour enregistrer les 3 fichiers.
Les 3 fichiers texte ont les tailles suivantes
Fichier 1 : 29 548 octets
Fichier 2 : 3 039 octets
Fichier 3 : 126 976 octets
Ce qui est important c'est que les identifiants #Fichier1 etc aient les mêmes valeurs dans le fichier rc et dans le fichier PB
Si tu veux utiliser des identifiant alphanumériques, fais-le mais ça n'apporte pas grand chose sauf si tu veux conserver un nom de fichier et encore, je ne sais pas quels caractères sont acceptés (cas du stockage du chemin), c'est mieux de définir en RC_data le nom complet du fichier puis ensuite mettre le fichier et la même chose pour les fichiers suivant.
Le code fonctionne, je l'ai testé
Tu devras changer le chemin du fichier exe qui est en lien pour l'adapter à ta machine.
Voici le fichier zip
Fichier KCK
Code : Tout sélectionner
EnableExplicit
Macro HIWORD(Value)
(Value>>16)
EndMacro
Macro LOWORD(Value)
Value & $FFFF
EndMacro
Macro MAKEINTRESOURCE(INT)
LOWORD(INT)
EndMacro
Macro IS_INTRESOURCE(Val)
HIWORD(Val)
EndMacro
Enumeration ; RessourceType, WinUser.h
#RT_CURSOR = 1
#RT_BITMAP = 2
#RT_ICON = 3
#RT_MENU = 4
#RT_DIALOG = 5
#RT_STRING = 6
#RT_FONTDIR = 7
#RT_FONT = 8
#RT_ACCELERATOR = 9
#RT_RCDATA = 10
#RT_MESSAGETABLE = 11
#RT_GROUP_CURSOR = 12
#RT_GROUP_ICON = 14
#RT_VERSION = 16
#RT_DLGINCLUDE = 17
#RT_PLUGPLAY = 19
#RT_VXD = 20
#RT_ANICURSOR = 21
#RT_ANIICON = 22
#RT_HTML = 23
#RT_MANIFEST = 24
EndEnumeration
;// constantes utilisées pour extraire les fichiers de la ressource
;// les valeurs doivent être identiques à celles du fichier RC
Enumeration 10 ;// la valeur 10 est celle qui débute les #define du fichier rc
#Fichier1
#Fichier2
#Fichier3
#Fichier4
#Fichier5
EndEnumeration
;// code d'erreur retourné lorsqu'une erreur est rencontrée
#Return_Error = 0
#LOAD_LIBRARY_AS_DATAFILE = 2
Global Chemin$ = "C:\users\jj\Desktop\"
Procedure.l EnumResNameProc(ResHandle, ResType, ResName, AppParam)
;// mémorise le uméro du fichier courant, est incrémenté à chaque boucle
Static Fichier_courant = 0
;// mémorise le handle du bloc d'informations du groupe d'icônes
Protected Find_Resource
;// mémorise le handle du bloc d'information des données de la ressource string
Protected LoadResource_RT_RCDATA
;// mémorise l'adresse mémoire du block d'informations de la ressource chargée en mémoire
Protected *LockResource
;// mémorise la taille des données de la ressource RT_String pour la langue choisie
Protected SizeofResource
;// mémorise l'identifiant du fichier à sauvegarder
Protected ID_Fichier
;// mémorise le fichier de destination courant
Protected Fichier$
;// teste que l'énumération est Ok, retourne #true pour continuer l'énumération
If ResType <> #RT_RCDATA
ProcedureReturn #True
EndIf
;// retrouve l'identifiant courant de l'élément RC_DATAS
If IS_INTRESOURCE(ResName)
;// c'est un pointeur sur une chaîne
Find_Resource = FindResource_(ResHandle, PeekS(ResName), ResType)
Else
;// c'est une valeur non un pointeur
Find_Resource = FindResource_(ResHandle, MAKEINTRESOURCE(ResName), ResType)
EndIf
;// teste l'identifiant, retourne une erreur si en dehors des valeurs
If ResName < #Fichier1 Or ResName > #Fichier5
;// mauvais identifiant, on continue l'énumération
ProcedureReturn #True
EndIf
Fichier_courant + 1
;// ici on enregistre les fichiers texte
Fichier$ = SaveFileRequester("Enregistrer le fichier " + Str(Fichier_courant), Chemin$, "Texte (*.txt)|*.txt", 0)
If Fichier$
;// charge la ressource en mémoire globale
LoadResource_RT_RCDATA = LoadResource_(ResHandle, Find_Resource)
If LoadResource_RT_RCDATA = 0
ProcedureReturn #Return_Error
EndIf
;// verrouille la ressource spécifiée en mémoire
*LockResource = LockResource_(LoadResource_RT_RCDATA)
If *LockResource = 0
ProcedureReturn #Return_Error
EndIf
;// retrouve la taille de la resource
SizeofResource = SizeofResource_(ResHandle, Find_Resource)
If SizeofResource = 0
ProcedureReturn #Return_Error
EndIf
ID_Fichier = CreateFile(#PB_Any, Fichier$)
If ID_Fichier = 0
ProcedureReturn #Return_Error
EndIf
;// écriture des données dans le fichier
WriteData(ID_Fichier, *LockResource, SizeofResource)
;// fermeture du fichier
CloseFile(ID_Fichier)
EndIf
;// retourne #True pour continuer l'énumération
ProcedureReturn #True
EndProcedure
Procedure Enumere_Ressources_RCDATAS()
;// mémorise le handle de l'exe ou dll ouvert
Protected hLibrary = 0
;// Charge Le fichier EXE, doit être au format PE (32 bits) pour fonctionner
hLibrary = LoadLibraryEx_(Chemin$+"KCK_test.exe", #Null, #LOAD_LIBRARY_AS_DATAFILE)
If hLibrary = #Null
ProcedureReturn #Return_Error
EndIf
;// énumère les ressources RCDATAS
EnumResourceNames_(hLibrary, #RT_RCDATA, @EnumResNameProc(), 0)
;// libère les ressources
FreeLibrary_(hLibrary)
EndProcedure
;// application avec les ressources du fichier KCK_test.exe
If OpenWindow(0, 0, 0, 600, 300, "Extraction de fichiers texte", #PB_Window_SystemMenu | #PB_Window_ScreenCentered)
;// lance la procedure d'énumération
Enumere_Ressources_RCDATAS()
Repeat
Until WaitWindowEvent() = #PB_Event_CloseWindow
EndIf
Dernière modification par Anonyme2 le ven. 04/sept./2009 17:13, modifié 6 fois.
Je n'ai pas testé mais ça semble intéressantAr-S a écrit :J'ai utilisé VBin2_Lib y'a qques mois.
Un programme indépendant (fait en PB) permet de créer un conteneur BIN sécurisé, ensuite l'appel des ressources se fait simplement en PB via sa Lib.
http://www.reelmediaproductions.com/pb
j'en avait été bien satisfait
Dans mon code personnel, j'utilise la compression des données et le codage MD5 permettant de vérifier l'intégrité des données.
- Kwai chang caine
- Messages : 6992
- Inscription : sam. 23/sept./2006 18:32
- Localisation : Isere
Ouaaaa !!!! et ben je ne sais comment te remercier mon bon DENIS 
Alors la ...l'aide que tu me donne c'est du lourd
(Tu remarqueras au passage que j'ai pas parlé de gaz)
Je vais essayer de comprendre
Au premier regard, y'a deja deux questions qui me viennent
Pourquoi parfois tu met deux \\ et parfois un seul dans la meme phrase
Et la deuxieme, je crois qu'il manque cette constante
#LOAD_LIBRARY_AS_DATAFILE
Alors la ...l'aide que tu me donne c'est du lourd
(Tu remarqueras au passage que j'ai pas parlé de gaz)
Je vais essayer de comprendre
Au premier regard, y'a deja deux questions qui me viennent
Pourquoi parfois tu met deux \\ et parfois un seul dans la meme phrase
Code : Tout sélectionner
Fichier3 RCDATA "C:\\users\jj\Desktop\\libpng-1.2.26beta01.txt"#LOAD_LIBRARY_AS_DATAFILE
- Kwai chang caine
- Messages : 6992
- Inscription : sam. 23/sept./2006 18:32
- Localisation : Isere