Mon premier outil AutoIt : vos avis?

Aide et conseils concernant AutoIt et ses outils.
Règles du forum
.
Répondre
Kaloo
Niveau 1
Niveau 1
Messages : 2
Enregistré le : dim. 20 juil. 2025 15:58
Status : Hors ligne

Mon premier outil AutoIt : vos avis?

#1

Message par Kaloo »

J’ai découvert AutoIt récemment en cherchant un moyen d’automatiser des trucs chiants sur mon PC et franchement… je crois que j’ai pris un coup de foudre 😂 Depuis, je code dès que j’ai une minute, j’ai l’impression d’avoir raté ma vocation ! Je me suis lancé dans un mini projet perso : une petite interface qui me permet d’ouvrir un dossier de travail et de lancer deux applis que j’utilise souvent dans ma journée. L’idée c’est de gagner 10 secondes à chaque fois, mais surtout de m’entraîner à faire un GUI simple et comprendre comment marchent les événements.
Voilà un bout du code que j’ai pondu :

Code : Tout sélectionner

#include <GUIConstantsEx.au3>
#include <MsgBoxConstants.au3>
#include <File.au3>

GUICreate("Lanceur Perso", 350, 180)
$btnOpenFolder = GUICtrlCreateButton("Ouvrir Dossier Projet", 50, 30, 250, 30)
$btnOpenApp = GUICtrlCreateButton("Lancer Notepad", 50, 80, 250, 30)
GUISetState()

While 1
    $event = GUIGetMsg()
    Switch $event
        Case $GUI_EVENT_CLOSE
            Exit
        Case $btnOpenFolder
            If FileExists("C:\Users\Kaloo\Documents\ProjetAutoIt") Then
                ShellExecute("C:\Users\Kaloo\Documents\ProjetAutoIt")
            Else
                MsgBox(16, "Erreur", "Le dossier n'existe pas !")
            EndIf
        Case $btnOpenApp
            Run("notepad.exe")
    EndSwitch
WEnd
Bon je sais que le code est probablement un peu “noob”, j’ai pas encore tous les bons réflexes. J’ai tenté de gérer le cas où le dossier n’existe pas mais il y a peut etre mieux à faire ou une facon plus propre d’écrire la boucle ou les conditions. Ce serait surtout top si vous avez des tips pour faire des vérifs plus robustes (genre si l’app plante ou si le chemin est vide). Je débute encore mais je kiffe vraiment le truc, donc tous vos conseils sont les bienvenus :)
Merci d’avance
Avatar du membre
TommyDDR
Modérateur
Modérateur
Messages : 2107
Enregistré le : mar. 22 juil. 2008 21:55
Localisation : Nantes
Status : Hors ligne

Re: Mon premier outil AutoIt : vos avis?

#2

Message par TommyDDR »

Bonjour Kaloo, bienvenu dans la famille ahah !

J'ai refait ton programme de la façon dont je l'aurai fait et je t'ai mis des commentaires pour expliquer le changement par rapport à ce que tu as fait.

N'hésite pas si tu as des questions !
#include <GUIConstantsEx.au3>
#include <MsgBoxConstants.au3>
#include <File.au3>

Opt("MustDeclareVars", 1) ; Permet de forcer le compilateur à déclencher une erreur si une variable n'est pas déclarée (Global / Local / Dim), cela t'évitera bien des soucis.
Opt("GUIOnEventMode", 1) ; Permet d'activer le mode "évenement" des GUI, au lieu de passer par GUIGetMsg

Global $gui = GUICreate("Lanceur Perso", 350, 180)
GUISetOnEvent($GUI_EVENT_CLOSE, quit, $gui) ; Permet d'associer le clic sur la croix / alt + f4 / echap à la fonction "quit"
Global $btnOpenFolder = GUICtrlCreateButton("Ouvrir Dossier Projet", 50, 30, 250, 30)
Global $btnOpenApp = GUICtrlCreateButton("Lancer Notepad", 50, 80, 250, 30)
GUICtrlSetOnEvent($btnOpenFolder, openFolder) ;Permet d'associer le clic sur un control à une fonction
GUICtrlSetOnEvent($btnOpenApp, openApp)
GUISetState(@SW_SHOW, $gui) ; Personnellement je prends l'habitude d'expliciter l'état voulu ainsi que la Gui ciblée, car sinon il s'applique à "la dernière fenêtre créée" mais ça m'a déjà amené à des problèmes

While 1
   Sleep(10)
WEnd

Func openFolder()
   If FileExists("C:\Users\Kaloo\Documents\ProjetAutoIt") Then
      ShellExecute("C:\Users\Kaloo\Documents\ProjetAutoIt")
   Else
      MsgBox(16, "Erreur", "Le dossier n'existe pas !")
   EndIf
EndFunc

Func openApp()
   Run("notepad.exe")
EndFunc

Func quit()
   Exit
EndFunc
3.1415926535897932384626433832795028841971693993751058209749445923078164062862089986280348253421170679
Répondre