FORUM DE DISCUSSION SUR LE LANGAGE PANORAMIC
Vous souhaitez réagir à ce message ? Créez un compte en quelques clics ou connectez-vous pour continuer.
FORUM DE DISCUSSION SUR LE LANGAGE PANORAMIC

Développement d'applications avec le langage Panoramic
 
AccueilAccueil  RechercherRechercher  Dernières imagesDernières images  S'enregistrerS'enregistrer  MembresMembres  Connexion  
Derniers sujets
» Logiciel de planétarium.
V3.13 du 10/07/2014 - gestion des ressources Emptypar Pedro Aujourd'hui à 10:37

» Un autre pense-bête...
V3.13 du 10/07/2014 - gestion des ressources Emptypar Froggy One Jeu 21 Nov 2024 - 15:54

» Récupération du contenu d'une page html.
V3.13 du 10/07/2014 - gestion des ressources Emptypar Pedro Sam 16 Nov 2024 - 14:04

» Décompilation
V3.13 du 10/07/2014 - gestion des ressources Emptypar JL35 Mar 12 Nov 2024 - 19:57

» Un album photos comme du temps des grands-mères
V3.13 du 10/07/2014 - gestion des ressources Emptypar jjn4 Mar 12 Nov 2024 - 17:23

» traitement d'une feuille excel
V3.13 du 10/07/2014 - gestion des ressources Emptypar jjn4 Jeu 7 Nov 2024 - 3:52

» Aide-mémoire mensuel
V3.13 du 10/07/2014 - gestion des ressources Emptypar jjn4 Lun 4 Nov 2024 - 18:56

» Des incomprèhension avec Timer
V3.13 du 10/07/2014 - gestion des ressources Emptypar Klaus Mer 30 Oct 2024 - 18:26

» KGF_dll - nouvelles versions
V3.13 du 10/07/2014 - gestion des ressources Emptypar Klaus Mar 29 Oct 2024 - 17:58

» instructions panoramic
V3.13 du 10/07/2014 - gestion des ressources Emptypar maelilou Lun 28 Oct 2024 - 19:51

» Figures fractales
V3.13 du 10/07/2014 - gestion des ressources Emptypar Marc Ven 25 Oct 2024 - 12:18

» Panoramic et Scanette
V3.13 du 10/07/2014 - gestion des ressources Emptypar Yannick Mer 25 Sep 2024 - 22:16

» Editeur d étiquette avec QR évolutif
V3.13 du 10/07/2014 - gestion des ressources Emptypar JL35 Lun 23 Sep 2024 - 22:40

» BUG QR Code DelphiZXingQRCode
V3.13 du 10/07/2014 - gestion des ressources Emptypar Yannick Dim 22 Sep 2024 - 11:40

» fichier.exe
V3.13 du 10/07/2014 - gestion des ressources Emptypar leclode Ven 20 Sep 2024 - 19:02

Navigation
 Portail
 Index
 Membres
 Profil
 FAQ
 Rechercher
Rechercher
 
 

Résultats par :
 
Rechercher Recherche avancée
Novembre 2024
LunMarMerJeuVenSamDim
    123
45678910
11121314151617
18192021222324
252627282930 
CalendrierCalendrier
-17%
Le deal à ne pas rater :
(Black Friday) Apple watch Apple SE GPS + Cellular 44mm (plusieurs ...
249 € 299 €
Voir le deal

 

 V3.13 du 10/07/2014 - gestion des ressources

Aller en bas 
3 participants
AuteurMessage
Klaus

Klaus


Nombre de messages : 12331
Age : 75
Localisation : Ile de France
Date d'inscription : 29/12/2009

V3.13 du 10/07/2014 - gestion des ressources Empty
MessageSujet: V3.13 du 10/07/2014 - gestion des ressources   V3.13 du 10/07/2014 - gestion des ressources EmptyVen 11 Juil 2014 - 1:56

Nouvelle version:
KGF.dll V3.13 du 10/07/2014

Nouveauté:
un jeu de 8 fonctions pour gérer les ressources dans un fichier en format PE (*.EXE et *.DLL)

Modules modifiés:
KGF.dll
KGF.chm
KGF.doc
KGF.pdf


La doc et les sources sont à jour. Ces fonctions sont documentées dans la rubrique Gestion des ressources, tout à la fin de la liste des rubriques dans le fichier d'aide.

Ceci représente un gros morceau, et c'est fonctionnellement assez puissant. Avec cela, on peut ajouter, remplacer ou supprimer des ressources pour un programme Panoramic (mais pas que...). Ces ressources, dans cette conception, sont des fichiers dont le contenu est copié dans le fichier visé, sous forme de ressource Windows.

Ceci permet de créer des installateurs en un seul fichier, en y incluant tous les modules à distribuer, y compris des fichiers binaires, des fichiers EXE, DLL, ZIP, DOC etc. N'importe quoi qui soit sous forme de fichier. On peut les extraire dans un fichier du même nom que celui d'origine (celui-ci sera mémorisé !) ou sous un autre nom. On peut tester l'existence d'une ressource, la remplacer par une autre ou la supprimer. On peut aussi récupérer les noms de toutes les ressources présentes dans le fichier, ainsi que les ressources spécifiques à un type de ressource donné.

Cela peut aussi servir pour un jeu, par exemple, qui peut embarquer tous ses modules spécifiques, comme des objets 3D, des mesh, des musiques, des textures, des fichiers de configuration etc. Contrairement à la notion d'application de Panoramic, on peut ici utiliser n'importe quel fichier, texte, image de toutes sortes, fichiers binaires etc. Aucune limite.

Seule contrainte: on ne peut pas modifier le fichier EXE ou DLL du programme lui-même, celui qui est en cours. Mais on peut le lire et extraire les ressources. Avec les fonctions présentes, il est facile d'écrire un petit programme Panoramic qui ajoute les ressources nécessaires à un EXE écrit en Panoramic, de sorte que celui-ci puisse ensuite à s'en servir, à l'aide également de ces fonctions.

Juste un petit rappel de ce que sont les ressources Windows. Une ressource est une portion de données quelconques, qui est référencée dans Windows par un type de ressource et un nom de ressource. Ces deux informations forment l'identification unique d'une ressource. Normalement, l'ensemble des ressources sont copiées dans l'exécutable lors de sa création, à partir d'un fichier *.RES qui doit au préalable être compilé à partir d'un fichier *.RC. Mais des API Windows permettent de modifier cela dynamiquement, et c'est ce que je rends accessible ici.

Mise en garde importante:
Les ressources sont une partie vitale pour n'importe quel programme. Leur modification ou suppression inconsidérées peuvent empêcher le programme de fonctionner, voire même conduire à des plantages sévères. C'est pourquoi je conseille fortement d'utiliser systématiquement des noms des types de ressources inconnus de Windows, par exemple PANORAMIC_RESSOURCE_1 ou similaire. Et toutes les ressources chargées par ces fonctions doivent se trouver sous un de ces types privatifs.

On peut créer autant de types de ressources que nécessaire. Et chaque type peut contenir un nombre quelconque de ressources. Et afin de mieux gérer ces ressources, mes routines créent autiomatiquement une ressource spécifique pour chaque type: c'est une ressource indexe du nom de !INDEX_xxxxxx est le nom du type correspondant. Et cette ressource indexe contient une liste en format texte dont chaque ligne décrit une ressource créée pour ce type de ressources, selon le format
NomDeRessource="X:\...\...\fichier_de_ressource.ext"
Une des nouvelles fonctions permet de retourner le contenu de cette ressource indexe pour un type de ressources donné. On a ainsi, pour chaque ressource, le nom du fichier et son type.

Et pour finir, un petit programme Panoramic qui peut servir de gestionnaire de ressources:
Code:
' gextion_ressources.bas

label ouvrir, sel3, sel4, click7, click12
label click15, click16, click17, click18, click20

dim res%, f$, s$, t$, n$, r$

full_space 0
caption 0,"Gestion des ressources"

button 1 : top 1,10 : left 1,10 : caption 1,"Ouvrir"
  on_click 1,ouvrir
open_dialog 2
alpha 8 : top 8,10 : left 8,1000 : caption 8,"Toutes les ressources dans fichier EXE/DLL:"
list 3 : top 3,30 : left 3,1000 : width 3,250 : height 3,500
  on_click 3,sel3
alpha 9 : top 9,10 : left 9,740 : caption 9,"Indexe de type de ressource actuel:"
list 4 : top 4,30 : left 4,740 : width 4,250 : height 4,500
  on_click 4,sel4
  
alpha 5 : top 5,70 : left 5,10 : caption 5,"Type de ressource:"
edit 6 : top 6,70 : left 6,130 : width 6,150
button 7 : top 7,70 : left 7,290 : width 7,150
  caption 7,"Indexe de ce type" : on_click 7,click7

alpha 10 : top 10,100 : left 10,10 : caption 10,"Nom de ressource:"
edit 11 : top 11,100 : left 11,130 : width 11,150
button 12 : top 12,100 : left 12,290 : width 12,150
  caption 12,"Fichier de la ressource" : on_click 12,click12
edit 13 : top 13,130 : left 13,10 : width 13,700
  inactive 13 : font_bold 13
  
button 15 : top 15,180 : left 15,10 : width 15,150
  caption 15,"Ajouter fichier ressource" : on_click 15,click15
button 16 : top 16,180 : left 16,170 : width 16,150
  caption 16,"Remplacer fichier ressource" : on_click 16,click16
button 17 : top 17,180 : left 17,330 : width 17,150
  caption 17,"Supprimer fichier ressource" : on_click 17,click17
button 18 : top 18,180 : left 18,490 : width 18,150
  caption 18,"Tester existence de ressource" : on_click 18,click18
edit 19 : top 19,210 : left 19,10 : width 19,700
  inactive 19 : font_bold 19

button 20 : top 20,260 : left 20,240 : width 20,150
  caption 20,"Extraire ressource dans fichier" : on_click 20,click20
edit 21 : top 21,290 : left 21,10 : width 21,700
  inactive 21 : font_bold 21
save_dialog 22


dll_on "KGF.dll"
  
end

' ***** ouvrir un fichier EXE/DLL
ouvrir:
  filter 2,"Fichiers exécutables|*.exe;*.dll"
  f$ = file_name$(2)
  text 6,""
  clear 4
  if f$="_"
    return
  end_if
  res% = dll_call2("GetListOfResources",handle(3),adr(f$))
  return
  
' ***** sélectionner un type de ressource
sel3:
  s$ = item_index$(3)
  text 6,""
  clear 4
  if left$(s$,1)=" " then return
  if instr(s$,"Resource Number")=1 then return
  res% = dll_call3("GetIndexOfResourceType",handle(4),adr(f$),adr(s$))
  text 6,s$
  return
  
' ***** sélectionner une resource
sel4:
  s$ = item_index$(4)
  text 11,""
  s$ = left$(s$,instr(s$,"=")-1)
  text 11,s$
  return
  
' ***** charger l'indexe du type de ressource choisi
click7:
  clear 4
  s$ = upper$(text$(6))
  if s$="" then return
  if left$(s$,1)="!" then s$ = mid$(s$,2,len(s$))
  if s$="" then return
  text 6,s$
  res% = dll_call3("GetIndexOfResourceType",handle(4),adr(f$),adr(s$))
  return
  
' **==* charger le contenu des données de la ligne indexe de la ressource choisie
click12:
  s$ = string$(255," ")
  t$ = text$(6)
  n$ = text$(11)
  res% = dll_call4("GetResourceIndexItemData",adr(f$),adr(t$),adr(n$),adr(s$))
  s$ = trim$(s$)
  text 13,s$
  return
  
' ***** ajouter une nouvelle ressource
click15:
  filter 2,"Tous fichiers|*.*"
  Text 19,""
  r$ = file_name$(2)
  if r$="_" then return
  text 19,r$
  t$ = text$(6)
  n$ = text$(11)
  res% = dll_call4("AddNewResource",adr(f$),adr(r$),adr(t$),adr(n$))
  ' actualiser la liste des ressources
  res% = dll_call2("GetListOfResources",handle(3),adr(f$))
  clear 4
  text 6,""
  text 11,""
  text 13,""
  return
  
' ***** remplacer une ressource
click16:
  filter 2,"Tous fichiers|*.*"
  Text 19,""
  r$ = file_name$(2)
  if r$="_" then return
  text 19,r$
  t$ = text$(6)
  n$ = text$(11)
  res% = dll_call4("ReplaceExistingResource",adr(f$),adr(r$),adr(t$),adr(n$))
  return

' ***** supprimer une ressource
click17:
  t$ = text$(6)
  if t$="" then return
  n$ = text$(11)
  if n$="" then return
  res% = dll_call3("DeleteExistingResource",adr(f$),adr(t$),adr(n$))
  ' actualiser la liste des ressources
  res% = dll_call2("GetListOfResources",handle(3),adr(f$))
  clear 4
  text 6,""
  text 11,""
  text 13,""
  return

' ***** tester si une ressource existe
click18:
  t$ = text$(6)
  if t$="" then return
  n$ = text$(11)
  if n$="" then return
  res% = dll_call3("FindExistingResource",adr(f$),adr(t$),adr(n$))
  if res%=0
    message "La ressource n'existe pas"
  else
    message "La ressource existe"
  end_if
  return
  
' ***** extraire une ressource existante dans un fichier
click20:
  text 21,""
  t$ = text$(6)
  if t$="" then return
  n$ = text$(11)
  if n$="" then return
  r$ = file_name$(22)
  if r$="_" then return
  res% = dll_call3("FindExistingResource",adr(f$),adr(t$),adr(n$))
  if res%=0 then return
  res% = dll_call4("ExtractExistingResource",adr(f$),adr(t$),adr(n$),adr(r$))
  if res%>0 then text 21,r$
  return

A vous d'inventer votre utilisation de ces fonctions !


Dernière édition par Klaus le Ven 11 Juil 2014 - 15:07, édité 1 fois
Revenir en haut Aller en bas
http://klauspanoramic.comxa.com/index.html
Jicehel

Jicehel


Nombre de messages : 5947
Age : 52
Localisation : 77500
Date d'inscription : 18/04/2011

V3.13 du 10/07/2014 - gestion des ressources Empty
MessageSujet: Re: V3.13 du 10/07/2014 - gestion des ressources   V3.13 du 10/07/2014 - gestion des ressources EmptyVen 11 Juil 2014 - 7:23

Je n'ai pas encore essayé, mais c'est pratique et puissant. C'est vrai que les premières idées d'utilisation est la création de programme d'installation mais il peut y avoir d'autres usages.
Revenir en haut Aller en bas
Klaus

Klaus


Nombre de messages : 12331
Age : 75
Localisation : Ile de France
Date d'inscription : 29/12/2009

V3.13 du 10/07/2014 - gestion des ressources Empty
MessageSujet: Re: V3.13 du 10/07/2014 - gestion des ressources   V3.13 du 10/07/2014 - gestion des ressources EmptySam 12 Juil 2014 - 0:55

J'ai ajouté une DLL dans mon WebDav, dossier DLLs\. Cette DLL s'appelle Resource.dll. Elle contient uniquement les 5 fonctions suivantes:
GetIndexOfResourceType = récupérer l'indexe d'un type de ressource dans un LIST
GetListOfResources = récupérer la liste de toutes les resources dans un LIST
GetResourceIndexItemData = récupérer le chemin d'accès au fichier d'origine d'une ressource
FindExistingResource = tester si une ressource existe
ExtractExistingResource = extraire une ressource dans un fichier

Ainsi, cette DLL peut servir de "véhicule" pour des ressources. On peut lui intégrer toutes les ressources nécessaires, par exemple par le gestionnaire de ressources publié ci-dessus. Ensuite, elle peut être intégrée elle-même dans un exécutable Panoramic, également par le gestionnaire de ressources posté ci-dessus.

Puis, cet exécutable Panoramic peut l'extraire de lui-même au premier démarrage (c'est-à-dire si ce fichier n'existe pas). A partir de là, le programme peut l'utiliser, en fermant KGF.dll et en ouvrant Resource.dll pour utiliser les fonctions ci-dessus, ou alors en utilisant ces fonctions directement à partir de KGF.dll, pour en extraire les ressources nécessaires dans des fichiers individuels.

Le grand avantage, c'est que le programme Panoramic en cours peur librement modifier les ressources dans cette DLL, par ajout d'autres ressources, remplacement de ressources voire même suppression de ressources, et ce en cours d'exécution, sans contrainte, a condition que cette DLL ne soit pas chargée à ce moment-là. On évite ainsi le blocage sécuritaire de Windows et on obtient un système de gestion dynamique des ressources.

Ceci peut servir, par exemple, pour la sécurisation de données sensibles. KGF.dll contient une fonction de cryptage, propriétaire, assez puissante. On peut imaginer un fichier sensible, crypté et mémorisé sous forme de ressource dans cette petite DLL. En cours d'exécution, on l'extrait et on le décrypte. A chaque modification, on le recrypte et on le met à jour dans la DLL. Et dans l'évènement ON_CLOSE de la form 0, on supprime ce fichier, si possible avec la fonction de suppression sécurisée également disponible dans KGF.dll. Ce n'est peut-être pas parfait comme sécurité, mais c'est déjà une bonne approche...
Revenir en haut Aller en bas
http://klauspanoramic.comxa.com/index.html
Yannick




Nombre de messages : 8635
Age : 53
Localisation : Bretagne
Date d'inscription : 15/02/2010

V3.13 du 10/07/2014 - gestion des ressources Empty
MessageSujet: re   V3.13 du 10/07/2014 - gestion des ressources EmptySam 12 Juil 2014 - 12:21

Je vais sans doute dire une grosse bêtise... Laughing 

Ceci peut il servir, par exemple, à changer l' icône d' un *.exe créé avec panoramic ?...


Aïe,aïe,aïe...tapez pas trop fort sur la pauvre bête... lol!
Revenir en haut Aller en bas
Klaus

Klaus


Nombre de messages : 12331
Age : 75
Localisation : Ile de France
Date d'inscription : 29/12/2009

V3.13 du 10/07/2014 - gestion des ressources Empty
MessageSujet: Re: V3.13 du 10/07/2014 - gestion des ressources   V3.13 du 10/07/2014 - gestion des ressources EmptySam 12 Juil 2014 - 12:42

Non, on ne peut pas. Il est très délicat d'intervenir sur les ressources existantes d'un fichier exécutable. Comme je l'ai dit dans mon post initial, cela peut entraîner des conséquences graves, et c'est pourquoi j'ai bloqué cela.

Pour changer l'icône d'un exécutable Panoramic, il y a l'excellent ResHacker (freeware) qui fait ça très bien.
Revenir en haut Aller en bas
http://klauspanoramic.comxa.com/index.html
Yannick




Nombre de messages : 8635
Age : 53
Localisation : Bretagne
Date d'inscription : 15/02/2010

V3.13 du 10/07/2014 - gestion des ressources Empty
MessageSujet: re   V3.13 du 10/07/2014 - gestion des ressources EmptySam 12 Juil 2014 - 12:56

C' est ce que j'utilise actuellement.

Je trouvais que le faire avec Panoramic et KGF aurait été sympa... Laughing
Revenir en haut Aller en bas
Klaus

Klaus


Nombre de messages : 12331
Age : 75
Localisation : Ile de France
Date d'inscription : 29/12/2009

V3.13 du 10/07/2014 - gestion des ressources Empty
MessageSujet: Re: V3.13 du 10/07/2014 - gestion des ressources   V3.13 du 10/07/2014 - gestion des ressources EmptySam 12 Juil 2014 - 13:14

Certes. Mais les icônes sont gérées d'une manière particulière, différente des autres ressources. Et je n'ai pas envie de me risquer à semer la pagaille dans ce bazar, d'autant que ce serait juste pour une unique fois, après la génération de l'EXE. Et que ce soit un programme Panoramic ou ResHacker, dans ce cas, ça revient au même.

Ce que j'ai fait, c'est de donner le moyen de gérer ce que la notion "application" de Panoramic fait, mais avec plus de souplesse (en acceptant absolument tous les fichiers) et en le gérant dynamiquement. donc, installateurs, jeux, applications auto-extractibles, programmes sécurisés par des données cryptées, ... Voilà un peu le créneau que je vise.
Revenir en haut Aller en bas
http://klauspanoramic.comxa.com/index.html
Klaus

Klaus


Nombre de messages : 12331
Age : 75
Localisation : Ile de France
Date d'inscription : 29/12/2009

V3.13 du 10/07/2014 - gestion des ressources Empty
MessageSujet: Re: V3.13 du 10/07/2014 - gestion des ressources   V3.13 du 10/07/2014 - gestion des ressources EmptyDim 13 Juil 2014 - 16:45

J'ai trouvé un code Visual Basic qui arrive à faire cela: changer l'icône d'un fichier EXE. Je vais le traduire en Delphi et l'intégrér dans KGF.dll.
Revenir en haut Aller en bas
http://klauspanoramic.comxa.com/index.html
Yannick




Nombre de messages : 8635
Age : 53
Localisation : Bretagne
Date d'inscription : 15/02/2010

V3.13 du 10/07/2014 - gestion des ressources Empty
MessageSujet: re   V3.13 du 10/07/2014 - gestion des ressources EmptyDim 13 Juil 2014 - 16:52

Chouette ! Merci Klaus !
Revenir en haut Aller en bas
Contenu sponsorisé





V3.13 du 10/07/2014 - gestion des ressources Empty
MessageSujet: Re: V3.13 du 10/07/2014 - gestion des ressources   V3.13 du 10/07/2014 - gestion des ressources Empty

Revenir en haut Aller en bas
 
V3.13 du 10/07/2014 - gestion des ressources
Revenir en haut 
Page 1 sur 1
 Sujets similaires
-
» V3.26 du 23/08/2014 - gestion ON_CHANGE dans Synedit
» V3.28 du 26/08/2014 - Synedit: gestion codes ANSI - Unicode
» V2.72 du 08/01/2014 - ajout ShowMessageModalChoixSortie
» V2.77 du 31/01/2014: ajout GetSelectedRichEditAttributes
» KGF_dll - nouvelles versions

Permission de ce forum:Vous ne pouvez pas répondre aux sujets dans ce forum
FORUM DE DISCUSSION SUR LE LANGAGE PANORAMIC :: Activité des sites créés par les Panoramiciens. :: Le site de Klaus-
Sauter vers: