AutoIt Script

Je viens de découvrir un langage de script impressionnant et je pense que ça peut en intéresser plus d’un : http://www.autoitscript.com/.

Il s’agit d’un environnement complet avec un interpreteur, un compilateur (qui fait des exécutables autonome sans besoin de dll externe), et un editeur (SciTE modifié) basé autour d’un langage qui ressemble très fort à du VB.
Cette envionnement n’est pas à la hauteur d’un Java ou d’un .NET mais dépasse largement VBScript sur de noubreux points.

L’aide est impécable, très bien organisée, chaque fonction est extrément bien détaillée avec un exemple concret.

Les trucs sympa que l’on peut faire:

  • Des interfaces graphiques (assez simple mais ca a le mérite d’être présent)
  • Gestion des fichiers, disques
  • Gestion du son (pas testé)
  • Gestion des évènements clavier et souris (on peut simuler des clics)
  • Gestion des Process
  • Gestion des fenêtres

et des nouveautés sur la beta très intéressantes :

  • Gestion Obj/COM
  • Gestion du réseau

J’en oublie surement, à vous de découvrir le reste.

Voici un exemple concret que j’ai fait hier, un script qui importe proprement (sans convertion alacon©) un fichier CSV dans Excel :

[codebox]
#cs

Import CSV File

Developped by Dreux Loic

Version 1.0

#ce

; Ouverture de l’objet Com Excel
$Excel = ObjCreate (“Excel.Application”)
if @error then
Msgbox (0x10,“Importation de CSV”,“Microsoft Excel n’est pas installé, veuillez l’installer avant d’exécuter ce script”)
exit
endif

; Affichage de la boite de dialogue
$var = FileOpenDialog(“Importer un CSV dans Excel”, @MyDocumentsDir, “Fichier CSV (.csv;.txt)”, 2 )

; Si aucun fichier n’a été sélectionné
If @error Then
exit
EndIf

; On configure excel
$Excel.DisplayAlerts = False
$Excel.ScreenUpdating = False
$Excel.Visible = 1

; Ouverture des fichiers en entrée et en sortie
$Workbook = $Excel.workbooks.add ; Add a new workbook
$File = FileOpen($var, 0)

; On vérifie que le fichier est correct
If $File = -1 Then
MsgBox(0, “Erreur”, “Impossible de lire le fichier”)
Exit
EndIf

; On lit le fichier en entrée
$i = 1
$Limit = 1
While 1
$Line = FileReadLine($File)
If @error = -1 Then ExitLoop
$vResult = StringSplit($Line, “;”)
if UBound($vResult) > $Limit then $Limit = UBound($vResult)
$Workbook.ActiveSheet.Cells($i,1).Value = $Line
$i += 1
Wend
MettreEnForme($Workbook, $i,$Limit)

; Fermeture du fichier
FileClose($File)

$Excel.ScreenUpdating = True

Exit

#cs

Function MiseEnForme($Workbook as Workbook, $NombreLignes as Long, $NombreColonnes as Long)

#ce
Func MettreEnForme($Workbook, $NombreLignes, $NombreColonnes)
dim $tableau[2][$NombreColonnes]
for $i = 0 to $NombreColonnes - 1
$tableau[0][$i] = $i + 1
$tableau[1][$i] = 2
next

$Workbook.ActiveSheet.Range("A1:A" & $NombreLignes).TextToColumns($Workbook.ActiveSheet.Range("A1"),1,1,false,false,true,false,false,false,"",$tableau)

EndFunc
[/codebox]

[quote=“ZGoblin, post:1, topic: 28599”][/quote]
je regarderais ca ce midi mais ca promet d’être bien sympas,
apres tout depend de la doc la communauté et de la reactivité des developpeurs.

Bussiere

Classos !
Je jetterais un oeil desus, ça pourrait pas mal m’aider à créer des petits programme d’installation de patch pour mon appli !

Merci du lien !

J’ai poussé mon script encore plus loin en intégrant une interface graphique qui affiche l’évolution de l’import.

Déjà bonne nouvelle, ca marche bien, j’ai même un bouton annuler qui permet d’annuler (et oui :stuck_out_tongue: ) à tout moment, chose impossible à faire en VBA.

Malheureusement, niveau perf’, c’est pas top. Je teste sur un énorme fichier de 100000 lignes et il lui faut deux fois plus de temps pour s’exécuter par rapport au code VBA. A mon avis, c’est la partie COM qui n’est pas très performante, mais il n’y a rien de catastrophique non plus.

Voilà, voilà…