Page 1 sur 1

[R] splash screen avant le lancement d'une application

Posté : mer. 30 juil. 2008 07:45
par nethiery
Je débute, voilà, je voudrais lancer une image jpg pendant 4 ou 5 secondes avant le lancement de mon application , j'ai trouvé ceci de "simple" , mon image se lance bien MAIS mon appli qui se nomme traqueur.exe ne se lance pas en suivant si quelqu'un peut m'aider.
Merci d'avance

► Afficher le texte

Re: [..] splash screen avant le lancement d'une application

Posté : mer. 30 juil. 2008 09:57
par ani
>Bonjour nethiery soyez le bienvenu parmis nous

Ou se trouve votre logiciel "traqueur.exe"

Pour run, il faut que vous sachiez, que cette commande, démarre une console ms-dos.
Dans votre exemple ça donne ceux-ci :
>Démarre une console ms-dos
>On y tape traqueur.exe
Le logiciel démarre ? si oui, il faut indiquer ceux-ci = run(@comspec & " /c traqueur.exe")
sinon faudra lui indiquer le chemin du logiciel.

VOus avez aussi la fonction shellexecute qui est quasi identique a run sauf que celui-ci est plutôt graphique, c'est la boîte de dialogue Executer.


Dans votre code l'appel à la fonction runapp est désactivé par le point virgule (;)

Re: [..] splash screen avant le lancement d'une application

Posté : mer. 30 juil. 2008 15:23
par nethiery
Merci de votre réponse rapide alors en fait mon appli est "portable " et je la lance par

Run("traqueur.exe")
$Path = @ScriptDir


mais je n'arrive pas à combiner les deux *.au3

merci d'avance

Re: [..] splash screen avant le lancement d'une application

Posté : mer. 30 juil. 2008 22:10
par Tlem
Voici une version light d'un splash screen (Implique de connaitre la taille de l'image) :

Code : Tout sélectionner

#include <WindowsConstants.au3>

$Image = "splash.jpg"
$Taille_Image_H = 240
$Taille_Image_V = 100

GUICreate("", $Taille_Image_H - 1, $Taille_Image_V - 1, -1, -1, $WS_POPUPWINDOW,$WS_EX_TOOLWINDOW)
GUICtrlCreatePic($Image, -1, -1, $Taille_Image_H, $Taille_Image_V)
GUISetState()

Sleep(4000) ; Delais d'affichage du splash.

RUN(@ScriptDir & "\traqueur.exe") ; Traqueur.exe ce trouve dans le même répertoire que le script.
Exit

Re: [..] splash screen avant le lancement d'une application

Posté : mer. 30 juil. 2008 22:16
par ani
ok :)

run(".\traqueur.exe")
ou
run($path & "traqueur.exe)

j'ai pas pu testé le script n'ayant pas autoit sous la machine
je recherche la clé usb pour testé


edit: hm on m'a devancé ^^'

Re: [..] splash screen avant le lancement d'une application

Posté : mer. 30 juil. 2008 22:30
par Tlem
Au final, j'aime bien la version GDI ...
La voici modifiée sous forme de fonction, et adaptée à la demande de nethiery :

Code : Tout sélectionner

#include-once
#include <GDIPlus.au3>
#include <WinAPI.au3>
#include <StructureConstants.au3>
#include <WindowsConstants.au3>

_SplashGDI(@ScriptDir & "\Splash.jpg", 3)
Run("traqueur.exe")
Exit


; --------------------------------------------  Functions  --------------------------------------------
Func _SplashGDI($Img, $tempo)
    _GDIPlus_Startup()
    $hImage = _GDIPlus_ImageLoadFromFile($Img)
    $width = _GDIPlus_ImageGetWidth($hImage)
    $height = _GDIPlus_ImageGetHeight($hImage)

    $GUI = GUICreate("", $width, $height, -1, -1, $WS_POPUP, $WS_EX_LAYERED)
    SetBitmap($GUI, $hImage, 255)
    GUISetState()
    WinSetOnTop($GUI, "", 1)
    _GDIPlus_Shutdown()

    Sleep($tempo * 1000)
EndFunc   ;==>_SplashGDI

Func SetBitmap($hGUI, $hImage, $iOpacity)
    Local $hScrDC, $hMemDC, $hBitmap, $hOld, $pSize, $tSize, $pSource, $tSource, $pBlend, $tBlend

    $hScrDC = _WinAPI_GetDC($hGUI)
    $hMemDC = _WinAPI_CreateCompatibleDC($hScrDC)
    $hBitmap = _GDIPlus_BitmapCreateHBITMAPFromBitmap($hImage)
    $hOld = _WinAPI_SelectObject($hMemDC, $hBitmap)
    $tSize = DllStructCreate($tagSIZE)
    $pSize = DllStructGetPtr($tSize)
    DllStructSetData($tSize, "X", _GDIPlus_ImageGetWidth($hImage))
    DllStructSetData($tSize, "Y", _GDIPlus_ImageGetHeight($hImage))
    $tSource = DllStructCreate($tagPOINT)
    $pSource = DllStructGetPtr($tSource)
    $tBlend = DllStructCreate($tagBLENDFUNCTION)
    $pBlend = DllStructGetPtr($tBlend)
    DllStructSetData($tBlend, "Alpha", $iOpacity)
    DllStructSetData($tBlend, "Format", 1)
    _WinAPI_UpdateLayeredWindow($hGUI, $hScrDC, 0, $pSize, $hMemDC, $pSource, 0, $pBlend, 2)
    _WinAPI_ReleaseDC(0, $hScrDC)
    _WinAPI_SelectObject($hMemDC, $hOld)
    _WinAPI_DeleteObject($hBitmap)
    _WinAPI_DeleteDC($hMemDC)
EndFunc   ;==>SetBitmap

Re: [..] splash screen avant le lancement d'une application

Posté : jeu. 31 juil. 2008 00:05
par nethiery
Absolument SUPERBE !!!!!!!!!!!!!!!!!!!!!!!!!!! :D :D
BRAVO à toi thierry , mon voisin de Bordeaux

Re: [R] splash screen avant le lancement d'une application

Posté : jeu. 31 juil. 2008 01:03
par nethiery
Bon ben j'en profite :D merci beaucoup ça fonctionne nickel

voilà maintenant c'est exe j'ai besoin de lui rajouter un reg donc j'ai mis

$Path = @ScriptDir
Run ("regedit.exe /s 2.reg")
Run ("traqueur.exe")

jusque là tout va bien , le fichier 2.reg me sers pour l'enregistrement du soft
donc copir du 2.reg , enregistrement du soft , lancement du splash nickel

mais je voudrais à la sortie du programme nettoyer la base de registre en lançant quand je ferme cet appli traqueur.exe un fichier 3.reg qui annule les modis faites pas le 2.reg

j'avais pensé à ça MAIS ça me le fait de suite comment puis je lancer ce 3.reg qu'à la fin et la sortie de mon programme ??

$Path = @ScriptDir
Run ("regedit.exe /s 2.reg")
Run ("traqueur.exe")
Run ("regedit.exe /s 3.reg")

si je met ça le soft n'est pas enregistré car le 3.reg se lance et annule le 2.reg de suite
merci encore

Re: [R] splash screen avant le lancement d'une application

Posté : jeu. 31 juil. 2008 01:23
par ani
Il vous faudra visualiser le processus du logiciel (traqueur)
Y aura plusieur possibilité, la plus simple est la fonction runwait(le logiciel) qui permet d'attendre la fin du processus avant de continuer une autre action.
ou bien sur une condition du style = If ..... then (si .... alors)

GDI c'est de la ball :)
j'ai encore le plein de projet en attente :(

bonne continuation ;)

Re: [R] splash screen avant le lancement d'une application

Posté : jeu. 31 juil. 2008 07:07
par Tlem
+1 avec ce que à dit ani.

De plus il serait sans doute souhaitable d'inscrire vous même l'info d'enregistrement plutôt que d'utiliser 2 fichiers .reg.

genre :

Code : Tout sélectionner

; Définition des variables.
$Lic = "dfgtj-f5yu-79jk-cdkh-25d5-cmza-4yu0"
$RegCle = "HKLM\SOFTWARE\MonSoft\Enregistrement"

RegWrite($RegCle, "Licence", "REG_SZ", $Lic)

RunWait("traqueur.exe")

; Indique de faire cette action à la sortie du script.
Func OnAutoItExit ( )
    RegDelete($RegCle, "Licence")
EndFunc
 

Re: [R] splash screen avant le lancement d'une application

Posté : jeu. 31 juil. 2008 10:29
par nethiery
merci je vais tester
super sympa