Icone et GUI je n'arrive pas

Aide sur les Interfaces Graphique Utilisateurs (GUI).
Règles du forum
.
Répondre
fredmame
Niveau 3
Niveau 3
Messages : 39
Enregistré le : mar. 05 févr. 2019 22:43
Status : Hors ligne

Icone et GUI je n'arrive pas

#1

Message par fredmame »

***********************************
EDIT:
voir mon message 4
je m'en suis sorti avec la création de la DLL
**************************************



Bonsoir,

je suis en train de construire un GUI avec Koda.
Evidemment, en local ca marche mais en testant sur un autre PC les icones ne s'affichent pas toutes.
Et l'objectif est de faire un .exe qui fonctionne sur n'importe quel Pc, meme un qui n'aurait pas autoit evidemment.

Je me suis donc mis en quête de comprendre et voila que je tombe sur ce sujet :
https://www.autoitscript.fr/forum/viewtopic.php?t=513
et sur la creation de dll
https://www.autoitscript.fr/forum/viewt ... f=11&t=310

Edit: il faut déja se rendre compte que ce n'est plus resources.au3 MAIS resourcesEx.au3 qui est utilisé
ensuite donc si je comprends bien il y a 3 solutions :

1/utiliser une dll :
le post https://www.autoitscript.fr/forum/viewt ... f=11&t=310 necessite d'etre mis à jour, notamment l'exemple si on veut utiliser autoit à jour :
il faut mettre le fichier ResourcesEX.au3 dans le dossier include d'autoit et avoir installé SciTE4AutoIt3.exe
il faut remplacer #include "resources.au3" dans l'exemple TestRessource.au3 par #include "resourcesEX.au3"
remplacer _ResourceSetImageToCtrl() par _Resource_SetToCtrlID()
placer le fichier Autoitlogo.gif là où on va compiler la dll
compiler la DLL avec le fichier .bat en ayant pris soin de de modifier le fichier madll.rc en :
LOGO_AUTOIT1 RCDATA "Autoitlogo.gif"

l'avantage c'est qu'on peut tester son code sans le compiler et que ca reste "lisible"
ensuite on compile en faisant crtl F7 et on utilise alors le .exe crée et la dll



2/ utiliser ResourcesEX.au3
mettre ce fichier dans include de autoit
installer SciTE4AutoIt3.exe
dans son propre code il faut ajouter #include <ResourcesEx.au3>
on remplace par GUICtrlSetImage PAR _Resource_SetToCtrlID (A VERIFIER...)
On ne peut "voir" le resultat qu'en compilant le script (par la fonction ctrl + F7)
en effet en faisant juste clic droit sur le script puis "run script" ne marche pas.

3/convertir les images en binaire

Voici ci-dessous mon code graphique sur lequel je souhaite travailler.
Le choix est difficile, c'est pas tres "plug and play"



#Region ### START Koda GUI section ### Form=C:\Users\Admin\OneDrive\MonGUI.kxf
$Form1 = GUICreate("Test", 380, 201, 339, 369)
$Label1 = GUICtrlCreateLabel("Gestion des catégories", 8, 16, 112, 17)
$Label2 = GUICtrlCreateLabel("Opérations de TRI de fichiers", 152, 16, 142, 17)
$quitter = GUICtrlCreateButton("Quitter", 320, 16, 41, 41, $BS_ICON)
GUICtrlSetImage(-1, "C:\Windows\System32\shell32.dll", -28)
GUICtrlSetTip(-1, "QUITTER")
$Aide = GUICtrlCreateButton("Aide", 320, 80, 41, 33, $BS_ICON)
GUICtrlSetImage(-1, "C:\Windows\System32\shell32.dll", -24)
GUICtrlSetTip(-1, "AIDE")
$Button1 = GUICtrlCreateButton("recuperer_le_zip", 32, 40, 49, 41, $BS_ICON)
GUICtrlSetImage(-1, "C:\Windows\System32\shell32.dll", -136)
GUICtrlSetTip(-1, "Télécharger le zip de catégories")
$Button2 = GUICtrlCreateButton("Extraire les catégories", 32, 88, 49, 41, $BS_ICON)
GUICtrlSetImage(-1, "C:\Windows\System32\shell32.dll", -322)
GUICtrlSetTip(-1, "Extraire les catégories")
$Button3 = GUICtrlCreateButton("lister Contenu", 200, 40, 49, 41, $BS_ICON)
GUICtrlSetImage(-1, "C:\Windows\System32\shell32.dll", -320)
GUICtrlSetTip(-1, "Lister le contenu")
$Button4 = GUICtrlCreateButton("filtre suppr", 200, 96, 49, 41, $BS_ICON)
GUICtrlSetImage(-1, "C:\Windows\System32\shell32.dll", -272)
GUICtrlSetTip(-1, "Trier un fichier via filtre(s) suppresseur(s)")
$Button5 = GUICtrlCreateButton("filtre_existence", 200, 152, 49, 41, $BS_ICON)
GUICtrlSetImage(-1, "C:\Windows\System32\shell32.dll", -296)
GUICtrlSetTip(-1, "Trier un fichier via filtre d'existence")
GUISetState(@SW_SHOW)
#EndRegion ### END Koda GUI section ###
Modifié en dernier par fredmame le mer. 27 févr. 2019 00:41, modifié 3 fois.
Avatar du membre
walkson
Modérateur
Modérateur
Messages : 1020
Enregistré le : ven. 12 août 2011 19:49
Localisation : Hurepoix
Status : Hors ligne

Re: Icone et GUI je n'arrive pas

#2

Message par walkson »

Bonjour,
Tlem a écrit : sam. 09 févr. 2008 15:32 Edit du 04/08/2014 : Les informations ci-dessous sont toujours valables pour les anciennes versions d'AutoIt, mais pour fonctionner avec la version 3.3.12.0 de AutoIt, guinness (Membre du forum Anglais) à mis à jour avec l'aide d'autres membres l'UDF Resources renommé pour l'occasion en ResourcesEx.
Forcement, ça ne marche pas :lol:
Vous trouverez ResourcesEx ici https://www.autoitscript.fr/forum/viewt ... 78#p103349
Un exemple à placer dans le dossier Examples et vérifier le chemin des images

Code : Tout sélectionner

#Region ;**** Directives created by AutoIt3Wrapper_GUI ****
#AutoIt3Wrapper_Icon=..\..\..\..\..\Program Files\AutoIt3\Examples\Helpfile\Extras\Script.ico
#AutoIt3Wrapper_Outfile=exemple_.exe
#AutoIt3Wrapper_Res_File_Add=C:\Program Files\AutoIt3\Examples\GUI\merlin.gif, RT_RCDATA, MERLIN_1, 0
#AutoIt3Wrapper_Res_File_Add=C:\Program Files\AutoIt3\Examples\Helpfile\Extras\Exclamation.png, RT_RCDATA, EX_1
#AutoIt3Wrapper_Res_File_Add=C:\Program Files\AutoIt3\Examples\Helpfile\Extras\AutoIt.bmp, RT_RCDATA, AUTOIT_1
#AutoIt3Wrapper_Res_File_Add=C:\Program Files\AutoIt3\Aut2Exe\Icons\SETUP01.ico, RT_ICON, ICO_1, 0
#AutoIt3Wrapper_Res_File_Add=C:\Program Files\AutoIt3\Examples\Helpfile\Extras\Arrow.ico, RT_ICON, ICO_2, 0
#AutoIt3Wrapper_AU3Check_Parameters=-d -w 1 -w 2 -w 3 -w 4 -w 5 -w 6
#EndRegion ;**** Directives created by AutoIt3Wrapper_GUI ****

#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
#include <WinAPIHObj.au3>
#include <ButtonConstants.au3>
#include '..\ResourcesEx.au3'
Global $hImage, $hHBITMAP, $nMsg
#Region ### START Koda GUI section ### Form=C:\Program Files\AutoIt3\SciTE\Koda\Templates\Form1.kxf
If Not @Compiled Then Exit MsgBox(16, "Error","N'est pas compilé !")
Global $Form1 = GUICreate("Form1", 453, 435, 691, 192)
GUISetBkColor(0x000030)
Global $button = GUICtrlCreateButton("", 5, 5, 95,95, $BS_BITMAP)
_Resource_SetToCtrlID(-1, 'MERLIN_1')
Global $button1 = GUICtrlCreateButton("", 5, 100, 95,95, $BS_ICON)
_Resource_SetToCtrlID(-1, 'ICO_2', $RT_ICON, Default, True)
Global $button2 = GUICtrlCreateButton("", 5, 195, 95,95, $BS_ICON)
_Resource_SetToCtrlID(-1, 'ICO_1', $RT_ICON, Default, True)
Global $button3 = GUICtrlCreateButton("", 150, 5, 95,95, $BS_BITMAP)
$hHBITMAP = _Resource_GetAsBitmap('EX_1', $RT_RCDATA)
$hHBITMAP = _WinAPI_AdjustBitmap($hHBITMAP, 80,80)
_Resource_SetBitmapToCtrlID($button3, $hHBITMAP)
Global $button4 = GUICtrlCreateButton("", 150, 100, 95,95, $BS_BITMAP)
$hHBITMAP = _Resource_GetAsBitmap('AUTOIT_1', $RT_RCDATA)
$hHBITMAP = _WinAPI_AdjustBitmap($hHBITMAP, 80,80)
_Resource_SetBitmapToCtrlID($button4, $hHBITMAP)
Global $pic = GUICtrlCreateLabel("", 140, 200, 200,200, $SS_BITMAP)
$hHBITMAP = _Resource_GetAsBitmap('AUTOIT_1', $RT_RCDATA)
$hHBITMAP = _WinAPI_AdjustBitmap($hHBITMAP, 200,200)
_Resource_SetBitmapToCtrlID($pic, $hHBITMAP)
GUISetState(@SW_SHOW)
#EndRegion ### END Koda GUI section ###


While 1
 $nMsg = GUIGetMsg()
 Switch $nMsg
	 Case $GUI_EVENT_CLOSE
		 Exit


 EndSwitch
WEnd
Il faut compiler le code pour qu'il fonctionne

Comme je l'écrivais il y a peu, je préfère cette solution plus souple et qui ne demande pas à être compilé
;coded by UEZ 2011
#include <buttonconstants.au3>
#include <guiconstantsex.au3>
#include <gdiplus.au3>
#include <memory.au3>
#include <SendMessage.au3>
#include <WinAPISysWin.au3>
_GDIPlus_Startup()
;~ Global Const $IMAGE_BITMAP = 0
Global Const $STM_SETIMAGE = 0x0172
Global $msg
Global Const $hGUI = GUICreate("Example", 600, 250)
Global Const $idLogo = GUICtrlCreatePic("", 215, 20, 169, 68)
Global Const $idButton = GUICtrlCreateButton("", 266, 150, 78, 81, $BS_FLAT + $BS_BITMAP)

Global Const $hButton = GUICtrlGetHandle($idButton)

Global Const $Bmp_Logo = _GDIPlus_BitmapCreateFromMemory(AutoIt_Logo(), True)
_WinAPI_DeleteObject(GUICtrlSendMsg($idLogo, $STM_SETIMAGE, $IMAGE_BITMAP, $Bmp_Logo))
Global Const $Bmp_Button = _GDIPlus_BitmapCreateFromMemory(Merlin(), True)
_WinAPI_DeleteObject(_SendMessage($hButton, $BM_SETIMAGE, $IMAGE_BITMAP, $Bmp_Button))
_WinAPI_UpdateWindow($hButton)
GUISetState()

While True
    $msg = GUIGetMsg()
    Switch $msg
        Case $idLogo
            MsgBox(0, "Information", "The picture has been clicked!")
        Case $idButton
            MsgBox(0, "Information", "the button has been clicked!")
        Case $GUI_EVENT_CLOSE
            _WinAPI_DeleteObject($Bmp_Logo)
            _WinAPI_DeleteObject($Bmp_Button)
            _GDIPlus_Shutdown()
            GUIDelete($hGUI)
            Exit
    EndSwitch
WEnd


Func AutoIt_Logo()
    Local $AutoIt_Logo
    $AutoIt_Logo &= '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'
    $AutoIt_Logo &= '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'
    $AutoIt_Logo &= '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'
    $AutoIt_Logo &= 'cy5hgUkAqHEOcABh1yoABOpwVLGVSVcAZYpQ1AQvsBMAfYoZ69AEe4AABTHzZgA0ABsA4AsP0D+WCrMAHmBImEED/eUAEPEKAC5Qr50AsAqkCpDX8AkABkALbxAGofAARVJrC0FzsPcAYFi0kLW+KgUAV7kGwvCmLQAABxcLbAPRD9IAig0JkADkmQEA4LAuGogXHQAAA85gLntAGOMAxBSD0AEJMAYAd4AXCTAANDAAdEtwBTKQBF8AAAlYME6EAQMAotMEAgADIzAAAAlQB/81lpIA/wAEqUAkrQMAHIMQGom3BCAA0wH6kgSD0L0A3QoHQNQQ0uAAC+zgAs7gDAgAgAb+iKqVe7kAW1APiCABUQsAOJ/bDVpgA2EAAAG0wKsQywkAczALZ9AJzuAAAiwgAObDU6AA6Q9CYAXqMAEALgAHwICzWYMADxoHtuyAAScA1gS+QIMIgAAAVtACPoABOzAAAVFQryEsAIsAdG4u8AL4W68AL6DCTNByJvAAuFaAADjQYggAMAE+IABgsAcATHAbWfOnGwAAtkF8bdzRBEAAELZEOwEUCwcAMqB4jDsMGXAAvy7gAssgAnwA4HR6EASWCwEAAQxBUXs4CIwACFTAwDNQAHoAIAW4hpk0cMYA7DBnLmQ2WUMAAzS8AzIgA0AA/+CzYvMAzuAAC4icyEAgeZkA0AQykAHfIgAAMhAAe9AIwIAAyIi8yIuUCQgABQSJfMpA8AAA8NNyrmECviAACZLgCwKwA2AA8ACpMHkzkQkAD6AOkhDJigwABoqXA00QB7MAcsq/LMYOIQYAauADL9ACLeAAAgiAAmuMqkEA0Kqw8Az18EAAP7DN1xNHEAAACzNQCOnVx6sAsAzOzA7zwQ8ATUB3AuFIlfQASEP8D+5cSXgAQCQttwdxkM8Ae3BQTPDOP+sAnRH2zpMHGcIAjAd7AAL5HAcAILAH69YxYTEAz5GUbSGSA1cAgG30PFwPkQMA0rADPsAOzgwAzfybCAqgB4IAMA4zAAungAsAXPQETxBHzxAADm4wDkGgBz0A/4CNa9AF5twAAi8Axhk8m7IAswRAHdSbw0gAQh3Uf5QDNMcABOc5c0VX1EAAHRY50NRF/UcAjDRESs0E58MA1Ljx01PNFlEA7dRUndHVIAAAHe3MLUAEZ1AAA+jwCuSgB4UAYNJuEA6nMNcA4QDTqCDOt/AACokwByKwAdwAcM4+sANxcJ4AQw0SUR3WG5EAA4pddIgtFGIAYA0CAAfs8AIAzayPJUBvPUAADkcQBIWACp4A7dmFUAhHMFMA61UDQxABE6AA0ywAB4K91AMABCyR8dg7kAEAAEDZPrwMUcAABYuQCK7QA7cAcATADdy3QA4ArwANiwANSFAAgzqNpxggA3EA0EevDduxXQ0AQCAJPsACto0AxstwATeARW0A/wANsiAL0PAA3WiABDzwDZ0A0AKTzQI+EL4AILDURifd3SEARA8gALTNAuwAkN8vMAEemg4Av9AFQ9AFZ/AACzywDVbQwy8AwA4sAAAZAAwAARAIWR3d8p0AMplgDWAALgAAwAL4PdnOIAwAy0AEII4ANMAAnwmu4AxuAkAA8NznU9gT/iYAslMNpAAEJoAAAT6Q4Rue3zgAnt8aDgAzLAAAKa7O89LYLS4AIlGdCdUQCAEAIAMmsA4Z4AMANQ4AUM7jPpAAAetgApv83C4AdAXsPOTAUuQAV6AKpPCsQLAAA8AgAGb+yZMA3GiBAORaLuQAXI4pi50JV/AA5aqgCk8KAqQAAAKBoArqfD4Ac66+Ev7mmNIA1HI+5+syRHMAIO4rgC7ojF4AEIp92IxddIoA3eiUXumWfukAmJ7pmr7pnB4AEAA7'
    $AutoIt_Logo = _Base64Decode($AutoIt_Logo)
    Local $tSource = DllStructCreate('byte[' & BinaryLen($AutoIt_Logo) & ']')
    DllStructSetData($tSource, 1, $AutoIt_Logo)
    Local $tDecompress
    _WinAPI_LZNTDecompress($tSource, $tDecompress)
    $tSource = 0
    Return Binary(DllStructGetData($tDecompress, 1))
EndFunc   ;==>AutoIt_Logo

Func Merlin()
    Local $Merlin
    $Merlin &= 'R0lGODlhRABHAPcAAP///xgxcRw1fRgtbRw5ghgtaRw1eRw5hsrKyhgxdRw9lhQkYRgxbRQoaRQ1fRg1eRw5ihg1dSBBkhQtZcLCwr6SlhQkWSA9kq6qrsaamrKytrq2tsrKzr6qQRQtdSA5ijldlhg1hhQxfaKenhAodRw9igwkVXl5eaJ9eRgxaUFpns6ioj1JVRAcSVVZWWFlYQAEHIaCghQ1jhgoYbaiPevr676+vhQtceeysiBBnrKOjhAkbS05Wd+mqhAkXY6KjqKWQWlpacqyQSAtSQggZcbGygwcUWFlVWl5kn1hYWGGshgxeaqqqsbGwpaSltvb3yQ9cYpxcSAxWRw1gt+uro59hqKmpjFFeYZpaaqCghQoXSAxaRAkZZKSjhAxhgQQNT1dkvPz8yhJmhQ5mhQgPTU5SX11SYaGjgwgWaKCguPj4wgQJK6aPZZxcUVFRTVZkklNYa6KjnF1eX2GnteiomVVVU1NUbaSltvX1zlJaZKKTVVdZdemqop9ORQoVcqmqiA5guvKzl1laa6aNZ6ennFZWRgxYbbC31GGwi1BaZKKVUFJZbq6vmFZca6engwYOUVZdVl5quvj3zFJilF5oiQ5aUFZpjExKKaWTZ6qvt+6vjFJglFJJAgYSUlVZaaWOWlpYQwofUU1NSA1cZaChnFxVXFxaUVxpk1dhhw9ktK+QVFBQdvKyu+2ukk5PSRFmjFVhjlFYQgkcca2SWFNVbaqXRwtWb6Wmj1JcX15WWFJScqyrlFBOSRBhuPGyvPv63VpNXl5ZYZ9VVldRWF1ivu+wj1lmhw1cWFVHLqqSUE9RW15in2CgmF9ohQcNQAMKCAoPSRBinl1PePf2yQ5XZaSaV1phig5ZbKysjVZloqCefv774aSru/XTVFtlsa2VZqORTU1QaaeXYJhXZZ9eUVFMdK+TZKGRWGGnhQkTVVNRW1lVTk9VV1hYTFZprKGhnWSsp6KNRwxbff7+//GxmV1fRw5fVVdfc7Kyhw5eRgtcb7CzkU5IG1hHIZlYf///yH5BAEAAP8ALAAAAABEAEcAAAj/AP8JHEiwoMGDCBMqXMiwocOHECM+dGdMosWLCMXkuJAPFsaPFlFpfBUgEciTDpd906bxAMqXC8XJySFm2SQxMHMWVAFJwqsc3mTqHPov2odIOWjOAYeOaE4kan5ZGpNp275mTl9mklTjVyZL07rigZcVJDwKP6qQ2kXPUZUYViiU/aikUYUePajgwNujTT0lczFWoKMpkK/Cgf7QIRX4YjM6rOZZOiT1UBg+txpbrELHV5hDeFodelJDUwYkmh8SuxVnRStWgTThCGQYRwZHjFMzJIZFxwo+VFoVG96KD58MWcZF0r1wzjgdGSoAx0GdygroUaIAZp6QWxsdWaJk/9Fxp8KdOGmwVEiTZjv3g0rS6HinrhCW+1iS1NGF/Md7hVXo4Ig6rvCyyoGuiBLDH1nM8V9CVeATBgJBrOLKhW50UUMNu6D24EGM/FJDGDVw0AVcT5DYVSYfGsRNWGrg8cQ0aqjxxBN4yBijgy0OhA0eHBRBASFO/BBDDE5gwIgNCOBjRY8CKcEENtgwYUoht1BBBR9Z1HGGFUxgYIV7H85RpBNBnLDLHxVUcMsfjrRzwg8/ENJUj2eccEI7MeDDAQUbbMAIBRzYEESaMZwBpSntuMAMBwhEGiSkTTIShAtBMAMlLuGYskERkYYaqpBWtMMDJT2eMgQ0MTDBCKiiRv9KgQZWBPGFIS26E8sljwThBDY2wDoqI0z8oMwaX+Tz4D21mDNLH27EQAiwwlJgAwZOmDLEFASUEA0Y3PUiQy3ddFNNGaB0wcQGFBThrg3YjBCDGwVIYO8FB7yRmgrRyIDKN9WYcwUJZTAz7aDWEovmtlN8cIG9B0zSWDYClHCBNZN4IUg7Mtjygrob2EABI9gQEoMyS4iDyxQWS3ABBPacUpYKD1xgcyoQCOBBPgccUMYJB9uwAbYuTHCP'
    $Merlin &= 'OZ54QIDDNkMgcVa9lHDvBwQEII8AgJTwgB0gM0LrCTzIYIo5eqSwRAgQpPKKBFNk45QxU9grQSpePNBAAvYAckAJhgT/Me0G2DhhxwMQXDGLEEdssccm1dSjwAWAOJWP1GsHAUoKLOAiAAGAfAABDzFggI0VL8hTwgEh5KIKOCxgkkwwCqzd9lD1XKG2AvXU0kEf65RiD+d7LwHHCBj8wEPPPYsgzO6DYOLwvb3o1AwuqdwbDSCLALNFKJvrvXcKJzABxxQ9AwKIACLkMUwfHUACgU8SQBA9TJu8fy8BS3BRxg0JGJA38iFIhCAYcADzAYIA9hDAEgrghlgIIgQPs9cUQPASKDQAEK94xQU+IAB9+EEK+gjAA37nPa354AAESOEBE2iAFKTDBwnImk8uIAAtgOsk14DBGlpggFQcwAAzGEIB/xjAgAgIIAQh8N4Bp2APbqWQhQxoQToYIAAIlGACj1jDGm6IQxjokAcG8MCqBlCAASTgAYK4QhLNRwABuPF3bTTAAwbgh0dM4AFQgMYadMhFlCTiC87gRTh80AI/BKAABQiACEyRDDWu0I1uTKEADGCALWjhEUawBS9EsQYy9BEliDhFIVCAAmV8oQD6KEADFAkJVSgiBJKkJCTdKII9uIALjyDDKNsAh6y0hgp0gEMDBnCNRNwgFLmYxSweKUsB5AN9odCDC4iQDnLg4DiKIgoSspCBFWQgDvIgphkSUYoOzCIZv3OjLEUQDEWAAhQdWAcR4ODNFVSAHKgaChLekf+BDNThFqMYwASkwYYOdEAIwRCBOilJSXsoQhUdoAEQhtGINERhBbdAgVOQgALWkCEDUBhAA1hAAyEIQRiQZChDH2AARUSUBtJoRBTYsYI4oGA5Q7GGP7LzhSTgogAzWMAiPOEJA6T0AUhl6BKEIQSJSmEP7BhCGvxRCKdQog47hQY0GABULTTAAyJg6UojgNQHiOAFQtCDHtjAg058oQ7kSII3skKJRtAiCZxApBa0UIAEkHWsESArS9vxggSMQg9wSActCqGLuc7FDsDgxDV24AO+BuCvcoxAAjYb2Ah4wAMJ8EAlYjEEdXDiHogIzDDigYw+mIEFPkikX8u62QD/bPa2tdVHA4aADH54ZC6IYEE/+vAJcLghtgywLVKXkIAAONe5t3UuV4fAiXT8di6XQMYnzrEFNPA1uZu9Ai48EAB93OC5zyViAaSgjk5cNytg4IcdzDAIHlR2iLb1QB4wUQkSVGIR50UvA8iohXLkMjAqSAcXCmAGO6DBAmVMrn5pkIsjAMETAZYuVwtQYGc8IjDGMMEEGpACalgAwikYgD5G4QkgsIEGpbgBEZMbAPVy2AgWSAeIRVyACczAAnwtgDxKAYQOsOHIeZDxjGes13RYAFdzMYQFJkDlGfghyAyoxB7McGQagKMS+mBAmJkM1HQYQQsI3usMZqCFKyNyacCyWAQbznEEM7hAyWSeQJuvoALNwAIKUNBCC6b85hvAgQ2J2MEO5LFkG0/AAipILXNOAQYLxBaRN1hEOxqgygWseQYNaEBQfZCCFHxIBW8otTwYPYAUGGITIIi1rGP9BplB6da4TkhAAAA7'
    Return Binary(_Base64Decode($Merlin))
EndFunc   ;==>Merlin

Func _WinAPI_LZNTDecompress(ByRef $tInput, ByRef $tOutput, $iBufferSize = 0x800000)
    Local $tBuffer, $Ret
    $tOutput = 0
    $tBuffer = DllStructCreate('byte[' & $iBufferSize & ']')
    If @error Then Return SetError(1, 0, 0)
    $Ret = DllCall('ntdll.dll', 'uint', 'RtlDecompressBuffer', 'ushort', 0x0002, 'ptr', DllStructGetPtr($tBuffer), 'ulong', $iBufferSize, 'ptr', DllStructGetPtr($tInput), 'ulong', DllStructGetSize($tInput), 'ulong*', 0)
    If @error Then Return SetError(2, 0, 0)
    If $Ret[0] Then Return SetError(3, $Ret[0], 0)
    $tOutput = DllStructCreate('byte[' & $Ret[6] & ']')
    If Not _WinAPI_MoveMemory(DllStructGetPtr($tOutput), DllStructGetPtr($tBuffer), $Ret[6]) Then
        $tOutput = 0
        Return SetError(4, 0, 0)
    EndIf
    Return $Ret[6]
EndFunc   ;==>_WinAPI_LZNTDecompress

Func _Base64Decode($input_string)
    Local $struct = DllStructCreate("int")
    Local $a_Call = DllCall("Crypt32.dll", "int", "CryptStringToBinary", "str", $input_string, "int", 0, "int", 1, "ptr", 0, "ptr", DllStructGetPtr($struct, 1), "ptr", 0, "ptr", 0)
    If @error Or Not $a_Call[0] Then Return SetError(1, 0, "")
    Local $a = DllStructCreate("byte[" & DllStructGetData($struct, 1) & "]")
    $a_Call = DllCall("Crypt32.dll", "int", "CryptStringToBinary", "str", $input_string, "int", 0, "int", 1, "ptr", DllStructGetPtr($a), "ptr", DllStructGetPtr($struct, 1), "ptr", 0, "ptr", 0)
    If @error Or Not $a_Call[0] Then Return SetError(2, 0, "")
    Return DllStructGetData($a, 1)
EndFunc   ;==>_Base64Decode
Les images sont converties en binaire par le programme de Maître UEZ https://www.autoitscript.com/forum/topi ... es-easily/
Il suffit de rajouter la fonction comme ci-dessus ou de la rajouter sous forme d'include, ce qui évite d'avoir un code principal à rallonge !
A noter que certains exemples donnés par Uez ne sont pas à jour avec la nouvelle version d'Autoit (il manque des includes)
Cordialement,
Walkson
"Horas non numero nisi serenas " Le canon de midi
(Je ne compte que les heures heureuses)
fredmame
Niveau 3
Niveau 3
Messages : 39
Enregistré le : mar. 05 févr. 2019 22:43
Status : Hors ligne

Re: Icone et GUI je n'arrive pas

#3

Message par fredmame »

merci pour la réponse... entre temps je continuais mes recherches et oui, ce n'est plus resources mais resourcesEX
d'ailleurs je me demandais où il fallait placer ce resourcesEx.au3 , si c'était dans includes ou dans le dossier du script qu'on veut compiler...

Je vous proposez 2 options dont une qui ne s compile pas (je suppose que vous sous entendez qu'on peut tester le au3 sans devoir le compiler ? en faisant clic droit puis run script)


je regarde à tete reposée toutes vos réponses et reviens ici dès que j'ai avancé/réussi... ou échoué :evil:

merci et bonne matinée.
Fred.
fredmame
Niveau 3
Niveau 3
Messages : 39
Enregistré le : mar. 05 févr. 2019 22:43
Status : Hors ligne

Re: Icone et GUI je n'arrive pas

#4

Message par fredmame »

et bien voila,
je viens de finir mon petit GUI en passant par la solution dll.

j'ai donc crée ma dll avec les outils fournis dans le post cité plus haut
https://www.autoitscript.fr/forum/viewt ... f=11&t=310

MAIS il faut le fichier resourcesEX.au3 donné par walkson ici:
https://www.autoitscript.fr/forum/viewt ... 78#p103349
à placer dans le dossier include de autoit
il faut aussi avoir installé SciTE4AutoIt3.exe

le fichier MADLL.RC contient entre autre
quitter ICON "croix.ico"
Aide ICON "aide.ico"

dans le dossier de creation je place mes fichiers croix.ico et aide.ico
je lance le .bat pour creer la dll =>le_nom_de_ma_dll.dll

pour info :les icones compressées (celles qui ne passent pas lors de la creation de la dll car lorsque j'utilisais le .bat ca ne me donnait pas la dll, j'ai fini par imaginer que certaines de mes icones étaient compressées, j'ai donc changé le type de la resource de ICON en RCDATA)et ca a marché.

je n'ai pas testé l'outil de Tlem mais je crois que ca aide à aller plus vite
https://www.autoitscript.fr/forum/viewt ... f=11&t=310 (fichier RDG.exe)

ensuite dans mon script gui crée avec koda je mets (entre autre)
#include <resourcesEX.au3>

et je remplace mon
$quitter = GUICtrlCreateButton("Quitter", 320, 16, 41, 41, $BS_ICON)
GUICtrlSetImage(-1, "C:\Windows\System32\shell32.dll", -28)
GUICtrlSetTip(-1, "QUITTER")
PAR
$quitter = GUICtrlCreateButton("Quitter", 320, 16, 41, 41, $BS_ICON)
_Resource_SetToCtrlID($quitter, "quitter", $RT_ICON, "le_nom_de_ma_dll.dll")
GUICtrlSetTip(-1, "QUITTER")

il faut une cohérence exacte entre ce qui est dans la dll au niveau du nom de la ressource et le nom qu'on écrit dans la fonction _Resource_SetToCtrlID($quitter, "ICI LE NOM DE LA RESSOURCE EXACT", $RT_ICON, "le_nom_de_ma_dll.dll")

$quitter est le nom de mon bouton.

Ensuite on peut tester le script en faisant un clic droit "run script" : ce n'est pas necessaire qu'il soit compilé pour le tester.
Une fois tout controlé, on peut le compiler avec scite en faisant ctrl F7



et bien voila, je suis plutot content de l'avancée.
je test demain sur un pc qui n'a pas autoit ni les .ico pour etre sur que ca marche bien avec le prog compilé et sa petite dll

je mettrai résolu en fonction de tout cela.
Avatar du membre
TommyDDR
Modérateur
Modérateur
Messages : 2086
Enregistré le : mar. 22 juil. 2008 21:55
Localisation : Nantes
Status : Hors ligne

Re: Icone et GUI je n'arrive pas

#5

Message par TommyDDR »

Juste pour info : Pourquoi ne pas utiliser FileInstall vers le dossier temp quitte à supprimer à la fin de l'utilisation du programme ?
3.1415926535897932384626433832795028841971693993751058209749445923078164062862089986280348253421170679
Avatar du membre
walkson
Modérateur
Modérateur
Messages : 1020
Enregistré le : ven. 12 août 2011 19:49
Localisation : Hurepoix
Status : Hors ligne

Re: Icone et GUI je n'arrive pas

#6

Message par walkson »

Avec _Resource_SetToCtrlID($quitter, "quitter", $RT_ICON, "le_nom_de_ma_dll.dll") la DLL n'est pas compilée dans l'EXE et devra être à coté du EXE pour fonctionner.
Je suis aussi étonné par "quitter" car les icons sont en général un nombre. Vérifiez avec ResHacker.exe la construction de votre DLL (dans C:\Program Files\AutoIt3\Extras\ResHacker)

Pour avoir la DLL dans l'EXE il faut
#AutoIt3Wrapper_Res_File_Add=C:\Users\PC\Desktop\ResourcesEx\Examples\le_nom_de_ma_dll.dllRT_RCDATA,PLUS1
mais après il faut récupérer l'icon
$hInstance = __Resource_Get('PLUS1', $RT_RCDATA)
Local $hResource = _WinAPI_FindResource($hInstance, $RT_ICON, 8) etc... 5 lignes de code pour chaque icon

Bref, l'idée de Tommy est la plus simple et la meilleur https://www.autoitscript.fr/autoit3/doc ... nstall.htm
et son usage facile
    GUICtrlCreateButton("my picture button", 10, 20, 40, 40, $BS_ICON)
    GUICtrlSetImage(-1, "le_nom_de_ma_dll.dll"", 2); 2 ième icon
(si la DLL est déployée à coté de l'EXE)
Cordialement,
Walkson
"Horas non numero nisi serenas " Le canon de midi
(Je ne compte que les heures heureuses)
Répondre