Exécution du script : rien ne se passe

Aide et conseils concernant AutoIt et ses outils.
Règles du forum
.
Répondre
Jules
Niveau 2
Niveau 2
Messages : 17
Enregistré le : mer. 04 mai 2016 17:00
Status : Hors ligne

Exécution du script : rien ne se passe

#1

Message par Jules »

Bonjour :) ,
J'ai un problème depuis quelques minutes. Je dois développer un programme Autoit avec en premier lieu une interface graphique. Jusqu'à il y a une 15aine de minutes tout fonctionnait parfaitement. Mais depuis peu (pour une raison que j'ignore totalement), lorsque je lance mon script, rien ne se passe. L'interface graphique ne s'affiche pas alors qu'elle devrait. De plus, j'ai bien vérifié qu'une processus était en cours d'exécution : le programme s'exécute mais n'affiche pas la GUI... En outre, j'ai noté que dans la barre des tâches, une icône AutoIt apparaissait et que le script était marqué "En pause", je ne sais pas si ça a à voir avec le fait que rien ne se passe.
Sauriez-vous où se trouve l'erreur ? merci :)


Voici mon code :

Code : Tout sélectionner

; ##########
; INCLUSIONS
; ##########
#include <ButtonConstants.au3>
#include <EditConstants.au3>
#include <FileConstants.au3>
#include <GUIConstantsEx.au3>
#include <StaticConstants.au3>
#include <String.au3>
#include <TrayConstants.au3>
#include <WindowsConstants.au3>
#include "test_performance.au3"



; ##################
; PARAMETRES GLOBAUX
; ##################
Opt("SendKeyDownDelay",30) ; pas trop rapide pour éviter que des frappes soient perdues
Opt("WinTitleMatchMode", 3) ; noms des fenêtres correspondant exactement


; #################
; CODE DU PROGRAMME
; #################

#Region ### START Koda GUI section ### Form=d:\mes documents\jlslre\documents\scripts autoit\automatisation arcmap\gui.kxf
$LARGEUR_FENETRE = 400
$HAUTEUR_FENETRE = 354
$Fenetre = GUICreate("Tests de performance - ArcMap", $LARGEUR_FENETRE, $HAUTEUR_FENETRE, @DesktopWidth/2 - $HAUTEUR_FENETRE/2, @DesktopHeight/2 - $LARGEUR_FENETRE/2, BitOR($GUI_SS_DEFAULT_GUI,$WS_MAXIMIZEBOX,$WS_SIZEBOX,$WS_THICKFRAME,$WS_TABSTOP))
$Demarrer = GUICtrlCreateButton("Démarrer", 295,310, 91, 33, $BS_DEFPUSHBUTTON)
GUICtrlSetFont(-1, 10, 400, 0, "MS Sans Serif")
$Iterations = GUICtrlCreateGroup("Nombre de tests à effectuer", 88, 56, 201, 65)
GUICtrlSetFont(-1, 11, 400, 0, "MS Sans Serif")
$InputIterations = GUICtrlCreateInput("", 104, 80, 169, 24, BitOR($GUI_SS_DEFAULT_INPUT,$ES_NUMBER, $SS_RIGHT))
GUICtrlCreateGroup("", -99, -99, 1, 1)
$Destination = GUICtrlCreateGroup("Destination du fichier de log", 10, 136, 380, 65)
GUICtrlSetFont(-1, 11, 400, 0, "MS Sans Serif")
$InputDestination = GUICtrlCreateInput("", 24, 160, 300, 24, $GUI_SS_DEFAULT_INPUT)
$BoutonSelectionDossier = GUICtrlCreateButton("", 340, 155, 33, 33, $BS_ICON)
GUICtrlSetImage(-1, "D:\Mes Documents\jlslre\Documents\scripts AutoIT\Automatisation ARCMAP\icones\dossier.ico", -1, 0)
GUICtrlCreateGroup("", -99, -99, 1, 1)
$Titre = GUICtrlCreateLabel("Tests de performance pour ArcMap", 14, 14, 381, 35, $SS_CENTER)
GUICtrlSetFont($Titre, 18, 400, 0, "MS Sans Serif")
$MsgInfo = GUICtrlCreateLabel("Veuillez ne pas utiliser le clavier et la souris pendant l'exécution des tests afin d'assurer leur bon déroulement.", 10, 215, $LARGEUR_FENETRE-20, 80, $SS_CENTER)
GUICtrlSetFont($MsgInfo, 13, 400, 0, "MS Sans Serif")
#EndRegion ### END Koda GUI section ###


; Boucle évènementielle GUI
While 1
	$nMsg = GUIGetMsg()
	Switch $nMsg

	    ; Fermeture de la fenêtre
		Case $GUI_EVENT_CLOSE
			Exit

	    ; Ouverture explorateur de dossiers
		Case $BoutonSelectionDossier
			SelectionDossier()

	    ; Bouton 'Démarrer'
		Case $Demarrer
		   If CheckParametres() Then
			  $NbIterations = Number(ControlGetText($Fenetre, "", "Edit1"))
			  $DossierDestination = ControlGetText($Fenetre, "", "Edit2")
			  DemarrerTests($NbIterations, $DossierDestination)
			  ExitLoop
		   EndIf

	EndSwitch
WEnd


Func CheckParametres()
   ; Vérifie la validité des paramètres
   ; Renvoie True si tout est OK; False sinon en affiant une MsgBox avec les erreurs

   ; Contenu de l'input des itérations
   $TexteIterations = ControlGetText("", "", $InputIterations)

   ; Contenu de l'input du dossier de destination
   $TexteDestination = ControlGetText("", "", $InputDestination)

   ; L'éventuel message d'erreur à afficher
   $MessageErreur = ""

   ; Champ 'itérations' vide
   If $TexteIterations = "" Then
	  ; Info bulle
	  $MessageErreur = "Vous devez saisir un nombre d'itérations." & @CRLF

   ; Valeur saisie <= 0
   ElseIf Number($TexteIterations) <= 0 Then
	  $MessageErreur = "Le nombre d'itérations doit être au moins égal à 1." & @CRLF
   EndIf

   ; Champ 'destination' vide
   If $TexteDestination = "" Then
	  $MessageErreur = $MessageErreur & "Vous devez choisir un dossier de destination."

   ; Dossier inexistant
   ElseIf Not FileExists($TexteDestination) Or (FileExists($TexteDestination) And Not StringInStr(FileGetAttrib($TexteDestination),"D")) Then
	  $MessageErreur = $MessageErreur & "Le chemin du dossier de destination saisi est incorrect."
   EndIf

   ; Au moins 1 erreur
   If $MessageErreur <> "" Then
	  MsgBox(BitOR($MB_OK, $MB_ICONERROR), "Paramètres incorrects", $MessageErreur)
	  Return False
   Else
	  Return True
   EndIf

EndFunc


Func SelectionDossier()
   ; Ouvre un explorateur pour sélectionner un dossier
   ; Si un dossier est choisi, met son chemin dans le champ de texte prévu
   ; Sinon, ne fait rien

   $dossier = FileSelectFolder("Sélectionnez un dossier de destination", @MyDocumentsDir)
   If @error <> 1 Then
	  ControlSetText("", "", $InputDestination, $dossier)
   EndIf

EndFunc



Func DemarrerTests($NbTests, $DossierDest)
   ; Démarre la session de tests sur ArcMap
   ;
   ; Paramètres :
   ; NbTests     -- Le nombre de tests à réaliser
   ; DossierDest -- Le dossier de destination du fichier de log

   ; Le nom du fichier de log
   Local $nomFic = $dossierDest & "\tests_performance_arcmap_" & @MDAY & @MON & @YEAR & "_" & @HOUR & @MIN & @SEC & ".csv"

   ; Création et ouverture fichier de log en écriture
   Local $hFicLog = FileOpen($nomFic, $FO_OVERWRITE)

   ; La ligne en-tête du CSV
   $EnTeteCSV = "Session du " & @MDAY & "/" & @MON & "/" & @YEAR & " - " & @HOUR & ":" & @MIN & ":" & @SEC
   For $i = 1 To 10
	  ; Ajout d'1 colonne par tâche
	  $EnTeteCSV = $EnTeteCSV & ";Tache " & $i
   Next

   ; Ecriture de l'en-tête dans le fichier
   FileWriteLine($hFicLog, $EnTeteCSV)

   ;FileWrite($hFicLog, "Session de test réalisée le " & @MDAY & "/" & @MON & "/" & @YEAR & " à " & @HOUR & ":" & @MIN & ":" & @SEC & @CRLF)

   ; Accord orthographique
   ;If $NbTests > 1 Then
	;  FileWrite($hFicLog, $NbTests & " tests réalisés" & @CRLF)
   ;ElseIf $NbTests = 1 Then
	;  FileWrite($hFicLog, "1 test réalisé" & @CRLF)
   ;EndIf

   ;FileWrite($hFicLog, _StringRepeat("=", 20) & @CRLF & @CRLF)


   For $i = 1 To $NbTests

	  ; Info-bulle en bas à droite
	  TrayTip("Exécution des tests de performance pour ArcMap en cours ...", "Test n° " & $i & "/" & $NbTests, 1000 & $i & "/" & $NbTests, $TIP_ICONASTERISK)

	  ; On fait autant de tests que nécessaire
	  Local $LigneTemps = FaireUnTest()

	  ; On écrit une ligne avec le numéro de tests et les temps
	  FileWriteLine($hFicLog, "Test " & $i & ";" & $LigneTemps)
	  ;FileWrite($hFicLog, @CRLF & _StringRepeat("=", 20))
	  ;FileWrite($hFicLog, "Fin du test numéro " & $i & @CRLF)
	  ;FileWrite($hFicLog, _StringRepeat("=", 20) & @CRLF & @CRLF)

   Next

   ; Afficher un message à l'utilisateur à la fin des tests
   MsgBox(BitOR($MB_OK, $MB_ICONINFORMATION), "Exécution des tests terminée", "Les tests de performance pour ArcMap sont terminés. Les résultats sont visibles dans le fichier " & $nomFic)


EndFunc
Avatar du membre
orax
Modérateur
Modérateur
Messages : 1479
Enregistré le : lun. 23 mars 2009 04:50
Localisation : ::1
Status : Hors ligne

Re: Exécution du script : rien ne se passe  

#2

Message par orax »

GUISetState() :mrgreen:
De petits détails peuvent faire toute la différence. — Quand la boule de neige commence à rouler… poussez-la. (Columbo)
Avatar du membre
mikell
Spammer !
Spammer !
Messages : 6292
Enregistré le : dim. 29 mai 2011 17:32
Localisation : Deep Cévennes
Status : Hors ligne

Re: Exécution du script : rien ne se passe

#3

Message par mikell »

Jusqu'à il y a une 15aine de minutes tout fonctionnait parfaitement. Mais depuis peu (pour une raison que j'ignore totalement), lorsque je lance mon script, rien ne se passe
Case 1 : grève , Case 2 : RTT
:mrgreen:
" L'échec est le fondement de la réussite. " (Lao-Tseu )
" Plus ça rate, plus on a de chances que ça marche " (les Shadoks )
Jules
Niveau 2
Niveau 2
Messages : 17
Enregistré le : mer. 04 mai 2016 17:00
Status : Hors ligne

Re: Exécution du script : rien ne se passe

#4

Message par Jules »

orax a écrit :GUISetState() :mrgreen:
Il faut que je fasse quoi avec cet appel de fonction ? ^^

EDIT: Autant pour moi ! J'avais complètement zappé que cette fonction permet d'afficher la GUI ! J'ai dû l'effacer par erreur, merci pour cette erreur toute bête ^^
Répondre