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


