Outil “Net Use” graphique avec AutoIT

I. Introduction

Une fois n’est pas coutume, mais pour vous démontrer qu’il n’y a pas que Powershell dans ma vie de technicien informatique, je vous propose un petit exemple de création d’un outil graphique simple au travers du célèbre outil d’automatisation AutoIT.

Version finale de l’outil

Pour les rares lecteurs qui ne connaitrais pas ce fabuleux freeware, reportez-vous au site http://www.autoitscript.com/site/autoit/ ou bien pour un historique détaillé  https://fr.wikipedia.org/wiki/AutoIt   Sachez simplement que malgré son âge avancé (comme moi 😀 ) cet outil ne manque pas de ressources.

Dans les grandes lignes, AutoIT utilise un langage proche du basic et permet (entre autres) de “piloter” des interfaces graphiques et/ou d’en créer de nouvelles.

Parmi les plus belles créations, je citerais simplement “gimagex” pour la gestion des images WIM chères à mes activités régulières de déploiement.

Pour un apprentissage détaillé d’autoIT, reportez-vous à la documentation traduite en français ici https://www.autoitscript.fr/autoit3/docs/ ou un excellent article ici https://openclassrooms.com/courses/la-programmation-avec-autoit

Je ne reviendrais donc pas sur l’usage et l’installation simplissime de cet outillage.

En gros, AutoIT fonctionne sur la base d’un fichier source “.AU3” que vous devrez créer avec un simple éditeur de texte ou plus facilement avec un éditeur spécialisé reconnaissant la syntaxe du langage tel que Scite (fournit avec le package) ou Notepad++.

https://www.autoitscript.com/site/autoit/downloads/

Une fois le code créé, il ne restera qu’à le convertir via l’outil intégré “Aut2exe.exe” ou “aut2exe_x64.exe” afin d’obtenir un exécutable autonome 😀

 

II. Création de l’interface

 

Pour simplifier la création (design) de l’interface graphique, vous pouvez utiliser Koda FormDesigner dont vous trouverez des explications dédiées sur le sujet ici https://www.autoitscript.fr/forum/viewtopic.php?t=13983

Et pour télécharger Koda c’est par là http://koda.darkhost.ru/dl.php?file=koda_1.7.3.0.zip

Aperçu du concepteur d’interface Koda

Aperçu du concepteur d’interface Koda

III. Le script AutoIT

 

A. Fichier optionnel de configuration de l’outil

Pour agrémenter, j’ai ajouté un fichier “NetUse.ini” facultatif pour la configuration de ce petit outil, à déposer au besoin dans le même dossier que l’outil compilé.

Exemple :. “NetUse.ini”

[Default]

Share=\\192.168.0.10\Logiciels

UserName=User

UserDomain=Domain

UserPassword=Pa$$w0rd

 

B. Fichier icone de l’outil

Choisissez un fichier .ico (ici NetUse.ico) qui sera associé à l’outil.

A déposer dans le même dossier que le script .AU3 avant de le compiler

C. Contenu complet du script .AU3

Recopiez le contenu ci dessous dans un bloc-notes, puis enregistrez-le avec une extension “.au3”

#include <ButtonConstants.au3>

#include <ComboConstants.au3>

#include <EditConstants.au3>

#include <GUIConstantsEx.au3>

#include <StaticConstants.au3>

#include <WindowsConstants.au3>



; ---- fichier de configuration

$sFilePath = @ScriptDir & "\NetUse.ini"

If FileExists($sFilePath) Then

   ; ConsoleWrite("Fichier de configuration trouvé : " & $sFilePath & @CRLF)

   $sShare = IniRead($sFilePath,"Default","Share","")

   $sUserName = IniRead($sFilePath,"Default","UserName","")

   $sUserDomain = IniRead($sFilePath,"Default","UserDomain","")

   $sUserPassword = IniRead($sFilePath,"Default","UserPassword","")

   ; ConsoleWrite("Valeurs : " & $sShare & @CRLF & $sUserName & @CRLF & $sUserDomain & @CRLF & $sUserPassword & @CRLF)

Else

   $sShare = "\\Serveur\Partage"

   $sUserName = "Utilisateur"

   $sUserDomain ="DomaineOuMachine"

   $sUserPassword = "Password"

EndIf

; -----

; appel du script avec le chemin UNC en argument

If $cmdline[0] <> "0" Then

   If StringLeft($CmdLine[1],2) = "\\" Then

       $sShare = $CmdLine[1]

   EndIf

EndIf



Opt("GUIOnEventMode", 1)

#Region ### START Koda GUI section ### Form=

$FormNetUse = GUICreate("Connecter un lecteur réseau", 383, 193, 398, 427)

GUISetIcon(".\NetUse.ico", -1)

GUISetOnEvent($GUI_EVENT_CLOSE, "FormNetUseClose")

$Label1 = GUICtrlCreateLabel("Utilisateur", 24, 72, 50, 17)

$Label2 = GUICtrlCreateLabel("Mot de passe", 24, 96, 68, 17)

$ComboDrive = GUICtrlCreateCombo("Z:", 112, 24, 33, 25, BitOR($CBS_DROPDOWN,$CBS_AUTOHSCROLL))

GUICtrlSetData(-1, "Z:|Y:|X:|W:|V:|U:|T:|S:|R:|Q:|P:|O:|N:|M:|L:|K:|J:|I:|H:|G:|F:|E:|D:|C:|B:|A:")

$InputUNC = GUICtrlCreateInput($sShare, 112, 48, 249, 21)

$InputUserName = GUICtrlCreateInput($sUserDomain & "\" & $sUserName, 112, 72, 193, 21)

$InputPassword = GUICtrlCreateInput($sUserPassword, 112, 96, 193, 21, BitOR($GUI_SS_DEFAULT_INPUT,$ES_PASSWORD))

$ButtonConnect = GUICtrlCreateButton("Connecter", 119, 144, 145, 25)

GUICtrlSetOnEvent(-1, "ButtonConnectClick")

$Label3 = GUICtrlCreateLabel("Chemin réseau", 24, 48, 74, 17)

$Label4 = GUICtrlCreateLabel("Lecteur", 24, 24, 40, 17)

GUISetState(@SW_SHOW)

#EndRegion ### END Koda GUI section ###



While 1

     Sleep(100)

WEnd



Func ButtonConnectClick()

   Connect()

EndFunc

Func FormNetUseClose()

   Exit

EndFunc



Func Connect()

    $Drive = GUICtrlRead($ComboDrive)

     $UNC = GUICtrlRead($InputUNC)

     $username = GUICtrlRead($InputUserName)

    $password = GUICtrlRead($InputPassword)



    If $username = '' Or $password = '' Then

        MsgBox(48, "Avertissement", "Attention, vos identifiants, nom ou mot de passe, sont incomplets." & @CRLF & _

          "Certains environnements, tel que WinPE, requierent impérativement un nom " & _

          "d'utilisateur pour les connexions à distance.")

    EndIf



    If DriveMapGet($Drive) <> '' Then

       $Result = MsgBox(20, "Erreur", "Le lecteur " & $Drive & " est déjà assigné vers " & _

                    DriveMapGet($Drive) & @CRLF & "Voulez-vous le reconnecter ?")

       If $Result = 6 Then ; yes

           DriveMapDel($Drive)

       Else

           Exit

       EndIf

    EndIf



    GUISetCursor(15,1)

    DriveMapAdd($drive, $UNC, 0, $username, $password) ; slow

     ; ConsoleWrite("Equiv : Net Use " & $drive & " " & $UNC & " /user:" & $username & " " & $password & @CRLF)

    If @error Then

        Switch @error

            Case 1

                $err_message = "Erreur indéterminée / Code retour Windows API : " & @extended

            Case 2

                $err_message = "L'accès à ce partage réseau a été refusé." & _

                     @CRLF & "Vérifier vos identifiants, et/ou essayez de préfixer le nom " & _

                     @CRLF & "d'utilisateur par celui du domaine ou de la machine distante , tel que : DOMAINE\UTILISATEUR."

            Case 3

                $err_message = "Le lecteur " & $Drive & " est déjà assigné."

            Case 4

                $err_message = "Nom de lecteur invalide."

            Case 5

                $err_message = "Chemin d'accès réseau invalide."

            Case 6

                $err_message = "Nom ou mot de passe invalide"

        EndSwitch

        GUISetCursor(2)

        MsgBox(16, "Erreur", $err_message)

    Else

        MsgBox(64, "Information", "Le lecteur " & $drive & " pointe désormais sur " & $UNC)

          Exit

    EndIf

EndFunc

 

D. Génération de l’exécutable final

Une fois que vous avez déposé le script .AU3 et le fichier .ICO dans votre dossier de travail, lancez simplement l’outil C:\Program Files (x86)\AutoIt3\Aut2Exe.exe ou C:\Program Files (x86)\AutoIt3\Aut2Exe_x64.exe

Aut2exe : Convertisseur de script AutoIT en exécutable

Sélectionnez le fichier .AU3, modifiez éventuellement le nom de l’exécutable résultant (par exemple pour distinguer l’architecture x64) – N’oubliez pas de cocher la case prévue à cet effet.

Sélectionnez le fichier .ICO si besoin puis cliquez sur “Convert

Procédez aux différents tests fonctionnels. Voici quelques exemples de messages obtenus selon les cas rencontrés.

Et voilà c’est fini !… Encore un programme tout beau tout neuf à mettre dans votre boite à outils.

Bonne autoIT-zation à vous

Christophe

 

 

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.