Page 1 sur 1
[R] Inclure image dans exécutable
Posté : sam. 14 déc. 2013 13:54
par aulus
Bonjour,
J'ai codé l'insertion d'une image par :
Et j'ai été surpris de voir que celle-ci n'est pas incluse dans l'exécutable. Pour qu'elle y apparaisse, l'exécutable doit être accompagné du fichier-image.
Y a-t-il possibilité d'inclure l'image dans l'exécutable, sans que ce dernier fasse appel à une image externe ?
Je vous remercie.
Re: [..] Inclure image dans exécutable
Posté : sam. 14 déc. 2013 14:42
par aulus
J'ai trouvé l'UDF resources.au3 et le code
Code : Tout sélectionner
#AutoIt3Wrapper_Res_File_Add=c:\autoit\mon_image.jpg, rt_rcdata, LOGO_JPG
...
$image = GUICtrlCreatePic("", 0, 0, 1010, 720)
_ResourceSetImageToCtrl(-1, "LOGO_JPG")
Mais j'obtiens beaucoup d'avertissements :
C:\autoit\resources.au3(139,55) : WARNING: $hImage possibly not declared/created yet
$hImage = _GDIPlus_BitmapCreateFromHBITMAP($ResData)
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^
C:\autoit\resources.au3(131,60) : WARNING: $pBitmap: declared, but not used in func.
Local $ResData, $nSize, $hData, $pData, $pStream, $pBitmap,
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^
C:\autoit\resources.au3(131,70) : WARNING: $hBitmap: declared, but not used in func.
Local $ResData, $nSize, $hData, $pData, $pStream, $pBitmap, $hBitmap
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^
C:\autoit\resources.au3(160,57) : WARNING: $hImage possibly not declared/created yet
$hImage = _ResourceGetAsImage($ResName, $ResType, $DLL)
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^
C:\autoit\resources.au3(162,60) : WARNING: $hBitmap possibly not declared/created yet
$hBitmap = _GDIPlus_BitmapCreateHBITMAPFromBitmap($hImage)
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^
C:\autoit\resources.au3(173,52) : WARNING: $hImage possibly not declared/created yet
$hImage = _ResourceGetAsImage($ResName, $ResType)
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^
C:\autoit\resources.au3(247,66) : WARNING: $iCtrl_GETIMAGE: declared, but not used in func.
Local $hWnd, $hPrev, $Style, $iCtrl_SETIMAGE, $iCtrl_GETIMAGE,
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^
C:\autoit\resources.au3(285,18) : WARNING: $hInstance possibly not declared/created yet
$hInstance = 0
~~~~~~~~~~~~~~~~^
C:\autoit\mon_prog.au3 - 0 error(s), 8 warning(s)
Re: [..] Inclure image dans exécutable
Posté : sam. 14 déc. 2013 14:45
par julie
tiens voila la solution

fonction fileinstall()
► Afficher le texte
Code : Tout sélectionner
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
FileInstall(@ScriptDir & "\img_test.jpg", @TempDir & "\img_test.jpg")
$img = @TempDir & "\img_test.jpg"
#Region ### START Koda GUI section ### Form=
$Form1 = GUICreate("Form1", 1010, 720, 192, 124)
$image = GUICtrlCreatePic($img, 0, 0, 1010, 720)
GUISetState(@SW_SHOW)
#EndRegion ### END Koda GUI section ###
While 1
$nMsg = GUIGetMsg()
Switch $nMsg
Case $GUI_EVENT_CLOSE
Exit
EndSwitch
WEnd
Re: [..] Inclure image dans exécutable
Posté : sam. 14 déc. 2013 14:54
par Tlem
FileInstall() est la solution la plus simple. Si vous voulez inclure l'image dans les ressources de l'exécutable compilé ( ce qui fait 'plus propre'), il y a deux tutoriels dans la section désignée.

Re: [..] Inclure image dans exécutable
Posté : sam. 14 déc. 2013 15:07
par aulus
Bonjour et merci,
Lancée sous AutoIt, la fonction FileInstall() fonctionne. Mais à la compilation, j'obtiens la fenêtre d'erreur :
Aut2Exe Error
Invalid FileInstall() Function
... et la compilation est abandonnée.
Re: [..] Inclure image dans exécutable
Posté : sam. 14 déc. 2013 16:24
par mikell
Vérifie la syntaxe du chemin de la source telle qu'elle est demandée dans la doc
Re: [..] Inclure image dans exécutable
Posté : sam. 14 déc. 2013 16:27
par parazitenew
Juste une idée comme ça, pourquoi ne pas utiliser une .dll? c'est facile, simple, tu peux même y inclure des icones et images pour ton programme.
Re: [..] Inclure image dans exécutable
Posté : sam. 14 déc. 2013 16:54
par aulus
mikell a écrit :Vérifie la syntaxe du chemin de la source telle qu'elle est demandée dans la doc
J'ai copié le code de Julie en changeant simplement le nom de mon fichier image.
parazitenew a écrit : pourquoi ne pas utiliser une .dll?
Mon intention est de ne pas ajouter de fichiers supplémentaires à mon exécutable.
Re: [..] Inclure image dans exécutable
Posté : sam. 14 déc. 2013 18:25
par mikell
Re: [..] Inclure image dans exécutable
Posté : sam. 14 déc. 2013 19:37
par aulus
Le problème est toujours là. Avez-vous testé le code de Julie ? Obtenez-vous un message d'erreur aussi ?
Re: [..] Inclure image dans exécutable
Posté : sam. 14 déc. 2013 21:06
par mikell
Aucune raison apparente pour que ça ne marche pas...
Peut-être #RequireAdmin ?
Sinon je donne ma langue au chat
Re: [..] Inclure image dans exécutable
Posté : sam. 14 déc. 2013 21:58
par julie
essai comme ceci
Code : Tout sélectionner
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
FileInstall ( "img_test.jpg" , @TempDir&"\" )
$img = @TempDir & "\img_test.jpg"
#Region ### START Koda GUI section ### Form=
$Form1 = GUICreate("Form1", 1010, 720, 192, 124)
$image = GUICtrlCreatePic($img, 0, 0, 1010, 720)
GUISetState(@SW_SHOW)
#EndRegion ### END Koda GUI section ###
While 1
$nMsg = GUIGetMsg()
Switch $nMsg
Case $GUI_EVENT_CLOSE
Exit
End
place bien ton img a la racine de ton script en veifiant bien qu'il porte le nom img_test.jpg
Re: [..] Inclure image dans exécutable
Posté : sam. 14 déc. 2013 23:28
par aulus
Cette fois-ci tout se passe bien. C'était donc un problème de chemin...
Merci Julie pour ce code qui fait bien ce que j'ai l'intention de faire, et merci à tous pour vos avis.
Re: [R] Inclure image dans exécutable
Posté : dim. 15 déc. 2013 11:22
par aulus
Une observation : l'insertion de l'image dans l'exécutable modifie ses couleurs d'origine (les comparaisons étant faites sur le même écran, bien entendu). Avez-vous déjà constaté ce phénomène ?
Re: [R] Inclure image dans exécutable
Posté : dim. 15 déc. 2013 11:57
par Tlem
Un fichier est un fichier. Si la commande FileInstall() modifiait le contenu des fichiers, cela provoquerait des comportement bien étrange en cas d’exécutable, fichiers textes, etc ... Et puis cela n'aurait aucun sens.
La modification des couleurs que vous constatez provient indéniablement d'autre chose. Je ne peux vous orienter sans plus d'information, mais faites des recherches et vous trouverez.