Page 2 sur 3
Posté : dim. 18 nov. 2007 14:56
par MiXS
Ca y'est mon image est en hexa mais là comment l'inserer ?
Posté : dim. 18 nov. 2007 19:11
par sylvanie
1) Fileinstall (on remue le couteau dans la plaît, mais c'est ce qu'il y a de plus logique)
2) on déclare un tableau d'octets dans le script, on le remplie des différents éléments hexa
dans les 2 cas le scripts devra recomposer l'image quand on en a besoins, et la détruire juste après.
cependant penser que mettre une ressource binaire en hexa la protège, je dirais que c'est un peu mettre un post it "ne touchez pas SVP" sur un billet de banque par terre ...
comme le disait Tlem, il n'y a que le chiffrement qui peut t'aider, et encore, il te faudra déchiffer la ressource juste avant la construction de la gui et penser à la détruire après sa création, et ceci présentera une période de vulnérabilité...
Mainteant, je n'ai pas bien compris ton besoins de sécurité :
- Tu ne veux pas qu'on pique ton image afin qu'on l'utilise ailleurs
ou
- Tu ne veux pas qu'elle soit falsifiée lors de l'utilisation de ton exe
car si c'est le 2eme point, tu calcule le SHA1 ou le MD5 de l'image et tu le mets en dure dans ton code afin de contrôler si eslle n'est pas modifier en cours de route. Mais il faut trouver une UDF les calculant (il y e n a qq unes) ou utiliser un exe externe faisant ces calculs et l'embarquer "encore" via fileinstall (pour le choix je suggère sdhash, du site se Sarah Dean)
Posté : dim. 18 nov. 2007 19:42
par MiXS
He ben je vais faire le fileinstall alors
Mais en faisant Fileinstall c'est possible de supprimer l'image juste apres que le fichier .exe soit férmé ?
Posté : dim. 18 nov. 2007 20:54
par Tlem
MiXS a écrit :Mais en faisant Fileinstall c'est possible de supprimer l'image juste apres que le fichier .exe soit férmé ?
Bien sur, il te suffit de faire :
quand tu n'a plus besoin du fichier, ou juste avant de quitter ton EXE (Exit)
Posté : dim. 18 nov. 2007 21:48
par MiXS
J'ai essayé mais "ça ne marche pas"
Pourriez vous me faire un exemple ?
Je sais que c'est FileInstall() mais je sais pas comment la presenté
Code : Tout sélectionner
FileInstall("C:\Exemple15.bmp", "C:\Programmes\Exemple.bmp")
.............
GUICtrlCreatePic ("C:\Programmes\Exemple.bmp", "", "", "", "", "")
.........................
FileDelete("C:\Programmes\Exemple.bmp")
J'ai fais ca mais l'image ne s'affiche pas !
Posté : dim. 18 nov. 2007 22:40
par Tlem
Votre exemple semble bon.
Est-ce que votre fichier image ce trouve bien dans C: au moment de la compilation ?
Si vous placer une pause (Avec une Msgbox par exemple) juste après le fileinstall, au lancement de votre script, le fichier BMP est-il décompresser dans C:\Programmes ?
Pour info, le GUICtrlCreatePic ne suffit pas pour visualiser l'image, il vous faut d'abord créer une GUI (GuiCreate) regarder dans l'aide pour un exemple détaillé.
Posté : dim. 18 nov. 2007 22:46
par MiXS
Ben mon code est dans ca genre là
Code : Tout sélectionner
#include <GUIConstants>
#Include <GuiList>
#NoTrayIcon
FileInstall("C:\Exemple15.bmp", "C:\Programmes\Exemple.bmp")
GUICreate( " exemple " , 500, 350, -1, -1)
GUICtrlCreatePic ("C:\Programmes\Exemple.bmp", "", "", "", "", "")
GUISetState(@SW_SHOW)
$Open = GUICtrlCreateButton("Ouvrir", 15, 15, 65, 21, 0)
$Input1 = GUICtrlCreateInput("", 292, 7, 81, 21, BitOR($ES_AUTOHSCROLL,$ES_READONLY))
GUICtrlSetFont(-1, 8, 800, 0, "MS Sans Serif")
$Play = GUICtrlCreateButton("bouton 1", 184, 139, 57, 21, 0)
$Button1 = GUICtrlCreateButton("Pause/Play", 196, 39, 73, 21, 0)
$Button2 = GUICtrlCreateButton("Stop ", 279, 39, 57, 21, 0)
FileDelete("C:\Programmes\Exemple.bmp")
Exit
Mon image est bien dans C:
Mais quand je le compile il me met une erreur et l'image ne s'affiche pas

!
Posté : dim. 18 nov. 2007 23:08
par sylvanie
peux tu copier coller le msg d'erreur de compile stp ?
(que la compile plante, ça me laisse perplexe)
par contre, à l'execution, se qu'il peut se passer est que C:\Programmes n'esiste pas, et donc Fileinstal sortira en erreur.
Il faut d'abort tester l'existence de ce répertoire (Fileexists) et au cas échéant le créer (Dircreate). Au passage, teste les retour d'erreur pour voir si tout c'est bien passer (pb éventuels de droit d'écriture.
Sinon j'ai testé chez moi et ça marche (en mettant un while 1 en plus sinon on sort direct ...)
Sinon astuce 1 : quand tu as un chemin bine long comme C:\Programmes\Exemple.bmp qui se répète plusieur fois, mets le tout d'abords dans une variable $fic_image="C:\Programmes\Exemple.bmp"
comme ça, c'est mons long à reprendre dans le script et surtout, si tu dois changer ce chemin, au moins tu ne le fais qu'une fois ... et pas 3
astuce 2, met le flag 1 en 3eme argument de Fileinstal pour forcer la copie du fichier même si il existe. Ainsi ça évite les mauvaises surprises si un fichier du même nom existe déjà ...
Posté : dim. 18 nov. 2007 23:09
par Tlem
Houlaaaa !
Vous devriez analyser des codes déjà fait, car au stade ou vous en êtes, on est pas rendu ...
Déjà première chose, le FileInstall ne décompressera le fichier que dans un répertoire existant. Il vous faut donc le créer avant si il n'existe pas !
Ensuite, pour la partie graphique, vous affichez bien une GUI, mais c'est tellement bref que vous avez le temps de rien voir.
Et oui après avoir créer la GUI, il faut faire une sorte de boucle pour attendre les messages provenant de cette dernière, comme l'appui sur un bouton, ou le fait de fermer la GUI, sinon elle se ferme aussitôt !
Regarder par ici pour l'exemple :
http://www.autoitscript.fr/viewtopic.php?t=236
Posté : dim. 18 nov. 2007 23:10
par Tlem
Griller sur le poteau par sylvanie

Posté : dim. 18 nov. 2007 23:12
par MiXS
Le message d'erreur c'est "Error adding file :
C:\Exemple15.bmp"
Sinon merci du tuyau pour le raccourci a propos du $fic_image="C:\Programmes\Exemple.bmp"

Posté : dim. 18 nov. 2007 23:36
par sylvanie
diagnostic 1 :
As tu des espace parasites dans ton Fileinstall ?
2 : Le fichier est il toujours là (un filedelete malheureux des fois ...)
3 : est il en cours d'utilisation ? (du coups, pas d'accès)
4 : est ce que ça fonctionne si tu lance le script sans le compiler (là ça deviendrai Xfiles)
Posté : lun. 19 nov. 2007 07:34
par arrkhan
arf, dommage que le sujet ait plus tourné vers le FileInstall, car l'idée de l'image insérer dans l'exe me plaisait bien notement pour les Spash-Screens, ca évitait d'avoir l'image avec l'exe et de les zipper...
pour la confidentialité des images, j'ai testé en changeant l'extension du fichier vers .atp (un de mes sites web donc © ^^ ), cette extension n'étant pas reconnu par windows, l'image aura donc une icone générique et à moins de l'ouvrir avec un logiciel d'image, l'utilisateur potentiel ne s'apercevra pas de la supercherie... surtout s'il croit que c'est un fichier système essentiel à l'exe ^^
on peut aussi essayer un .bin ou un .cab, c'est à dire des extension existante sous win, et alors là, avant que l'utilisateur pense a l'ouvrir avec un logiciel d'image, on a le temps
Code : Tout sélectionner
$SplashImg = @ScriptDir & "\W32sys.atp"
SplashImageOn("ATP_Sysinfo", $SplashImg,128,128,-1,-1,1)
Sleep(2000)
Posté : lun. 19 nov. 2007 08:13
par Tlem
arrkhan a écrit :arf, dommage que le sujet ait plus tourné vers le FileInstall, car l'idée de l'image insérer dans l'exe me plaisait bien notement pour les Spash-Screens
Il existe bien une possibilité 'd'intégrer' une image dans l'exe, et cela fait partie de l'éditeur des ressources (Avec Ressource hacker par exemple).
A l'heure actuelle, on peut ajouter des fichiers ICO sans problème, mais pour des images ou fichiers complémentaires, FileInstall est de rigueur.
arrkhan a écrit :ca évitait d'avoir l'image avec l'exe et de les zipper...
Je ne comprend pas trop votre remarque !!!
Si vous codé l'image en Hexa et l'intégrer au script, cela revient au même que le FileInstall, puisque de toute façon comme l'à fait remarquer sylvanie il vous faudra reconstituer l'image avant utilisation.
Et puis si vous devez changer l'image, quelle gymnastique ...
La commande FileInstall permet justement cette souplesse de rajouter ce que vous voulez à votre EXE, sans prise de tête, et en ce qui concerne le fait de les zipper, que je sache, c'est AutoIt qui ce débrouille tout seul lors de la compilation !!!
Pour ceux qui ne le savent pas encore, penser aussi à télécharger
Scite4AutoIt, qui intègre AutoItWrapper, et installer le.
Ensuite lancer Scite4AutoIt, et regarder dans
Aide puis
Aide sur Scite et enfin, rechercher
Directives.
Vous verrez dans ce cas qu'il est possible de faire vraiment presque tout ce que vous voulez avec votre EXE ...
Posté : lun. 19 nov. 2007 09:14
par arrkhan
ca évitait d'avoir l'image avec l'exe et de les zipper...
Je ne comprend pas trop votre remarque !!!
Et bien, si je veux envoyer mon exe à quelqu'un, il faut que je .zip l'image du splash screen et l'exe ensemble, pour que cela fonctionne...
Si je met le spash avec fileinstall j'ai peur que ca ralentisse le lancement de l'application encore plus que les 2 secondes du splash.
Posté : lun. 19 nov. 2007 11:20
par ani
hello
Code : Tout sélectionner
Global $stock_Image = @scriptdir & "\image"
;on en cree le dossier, vu qu'il n'existe pas
DirCreate($stock_Image)
; on commence l'installation de l'image
; tu peux indiquer une variable pour ton image (ici j'ai mi bmp)
$Dir_Stock_Image = $stock_Image & "\Splash.bmp" ;tu peux donner un autre nom pour l'image
FileInstall("C:\ani.bmp", $Dir_Stock_Image,1)
;on lance le SplashImageOn
SplashImageOn("Splash Screen", $Dir_Stock_Image,250,50)
Sleep(3000)
SplashOff()
On peux imaginer pour exit ou close du soft al destruction du dossier (variable stock image)
pour fileinstall la documentation dit au niveau de la source (premier parametre)
source The source path of the file to compile. This must be a literal string; it cannot be a variable. (elle ne prend pas les variables)
si tu indique fileinstall($image,$dest,1) quand tu la compilera t'aura un msg d'erreur, mais en faisant f5 y en a pas ..(bizar)
Quand vous ferez ctrl+f7 il va generé l'exe, en ayant bien mi dans son exe l'image c:\ani.bmp , quand vous allez lancé l'application exe, il va creer un dossier image dans le path de l'exe et d'y inclure le fichier ani.bmp (dont vous etes le seul a disposer)
j'espere qu'on ma compris ^^'
sinon faite celui-ci ()
Code : Tout sélectionner
;On stock les images dans le dossier temporaire
; faut rester simple, 1 on cree pas de dossier,2 on s'amuse pas a le detruire, 3 les cluster reste en place :)
Global $stock_Image = @TempDir & "\"
;On cree une variables pour la destination avec le nouveau nom de l'image
$Dir_Stock_Image = $stock_Image & "Splash.bmp" ;tu peux donner un autre nom pour l'image
FileInstall("C:\ani.bmp", $Dir_Stock_Image,1)
;on lance le SplashImageOn
SplashImageOn("Splash Screen", $Dir_Stock_Image,250,50)
Sleep(3000)
SplashOff()
Posté : lun. 19 nov. 2007 17:14
par Tlem
arrkhan a écrit :Si je met le spash avec fileinstall j'ai peur que ca ralentisse le lancement de l'application encore plus que les 2 secondes du splash.
A moins de mettre une image de plusieurs Mo, vous ne vous rendrez même pas compte de quoi que ce soit.
Posté : lun. 19 nov. 2007 18:46
par MiXS
Ca y est ca marche !!!!!!
Bon avec le FileInstall mais ca marche (grace a Scite4Autoit du lien de Tlem )
Merci a tous de votre aide !

Posté : lun. 19 nov. 2007 19:39
par sylvanie
j'arrive après la bataille, mais juste un ptit drnier pour la route pour montrer qu'on n'est pas obliger de squatter le DD longtemps :
Code : Tout sélectionner
#include <GUIConstants.au3>
#Include <GuiList.au3>
#NoTrayIcon
$fic_image="C:\Programmes\Exemple.bmp"
GUICreate( " exemple " , 500, 350, -1, -1)
FileInstall("I:\dev\autoit\forum\terre.bmp", $fic_image,1)
GUICtrlCreatePic ($fic_image, "","", "", "", "")
FileDelete($fic_image)
GUISetState(@SW_SHOW)
$Open = GUICtrlCreateButton("Ouvrir", 15, 15, 65, 21, 0)
$Input1 = GUICtrlCreateInput("", 292, 7, 81, 21, BitOR($ES_AUTOHSCROLL,$ES_READONLY))
GUICtrlSetFont(-1, 8, 800, 0, "MS Sans Serif")
$Play = GUICtrlCreateButton("bouton 1", 184, 139, 57, 21, 0)
$Button1 = GUICtrlCreateButton("Pause/Play", 196, 39, 73, 21, 0)
$Button2 = GUICtrlCreateButton("Stop ", 279, 39, 57, 21, 0)
While 1
WEnd
Exit
ici le Filinstall est appelé juste avant le GUICtrlCreatePic et le Filedelette juste après ... et pas d'histoire de zip dans la foulée
Posté : lun. 19 nov. 2007 20:41
par MiXS
Ah sa ça peut étre utile !
Même très (ca va plus vite:D)
Merci Sylvanie !!