Bonsoir
Description : Ce script permet d'exécuter la plupart des fonctions AutoIt en ligne de commande (DOS)
Fonctionnalités :
- Exécution d’une fonction autoit en ligne de commande (DOS)
- Déclaration et gestion des variables (Stocker dans un fichier INIi)
- Gestion sommaire des tableaux 1D
- Exécution d’une commande complexe par simple appel du nom de la fonction.
- Exécution d’une séquence de commande par simple appel du nom de la séquence
Par défaut les valeurs sont retourné dans l’invite de commande MsDos.
Cependant il existe 2 autres modes :
- Retourner la valeur dans un fichier Txt
- Retourner la valeur en tant que variable dans le fichier INI
Les variables contenues dans le fichier INI sont gérées de manière dynamique :
cela veut dire qu’elles sont interprétées et déclarées automatiquement au lancement du script.
Important : Le script fonctionne seulement une fois compiler (sous forme d’un executable)
Voici un premier script reduit a sa plus simple expression.
il est destiné a toute les personnes souhaitent reprendre mon travail et suivre une orientation diferente.
► Afficher le texte
Code : Tout sélectionner
#Region ;**** Directives created by AutoIt3Wrapper_GUI ****
#AutoIt3Wrapper_Change2CUI=y
#EndRegion ;**** Directives created by AutoIt3Wrapper_GUI ****
#include-once
#include <Array.au3>
#Include <String.au3>
#Include <Memory.au3>
#Include <NetShare.au3>
#Include <File.au3>
#Include <Security.au3>
#Include <Sound.au3>
#Include <SQLite.au3>
#Include <WinAPI.au3>
#Include <WinNet.au3>
#Include <Word.au3>
#Include <Clipboard.au3>
#Include <Crypt.au3>
#Include <Date.au3>
#Include <Excel.au3>
#Include <FTPEx.au3>
#Include <IE.au3>
#Include <Memory.au3>
If $cmdline[0] > 0 Then
Global $Resultat,$Cline = ""
Global $aArgs[$cmdline[0]]
$aArgs[0] = "CallArgArray"
;_ArrayDisplay($aArgs, "$aArgs") ; a utiliser pour le mode debug
;_ArrayDisplay($cmdline, "$cmdline") ; a utiliser pour le mode debug
For $i = 1 to (UBound($aArgs)-1)
$aArgs[$i] = $cmdline[$i+1]
$Cline = $Cline & $cmdline[$i+1]
If $i < UBound($aArgs)-1 Then $Cline = $Cline & ","
next
$Cline = $cmdline[1] & "(" & $Cline & ")"
$Resultat = Execute($Cline)
if $Resultat = "" then $Resultat = "Error : " & @error
; Gestion sommaire des tableau 1D
;if VarGetType($Resultat) = "Array" then
;For $iTab = 0 to (UBound($Resultat)-1)
;ConsoleWrite($Resultat[$iTab] & @CRLF)
;next
;else
ConsoleWrite($Resultat)
;EndIf
EndIf
Voici le script complet, celui ci contient toutes les fonctionalités citée plus haut.
il est destiné aux utilisateur.
► Afficher le texte
Code : Tout sélectionner
#Region ;**** Directives created by AutoIt3Wrapper_GUI ****
#AutoIt3Wrapper_Change2CUI=y
#EndRegion ;**** Directives created by AutoIt3Wrapper_GUI ****
#include-once
;#Include <L:\AutoitDev\Projets\CmdLine\AddUDF.au3>
#include <Array.au3>
#Include <String.au3>
#Include <Memory.au3>
#Include <NetShare.au3>
#Include <File.au3>
#Include <Security.au3>
#Include <Sound.au3>
#Include <SQLite.au3>
#Include <WinAPI.au3>
#Include <WinNet.au3>
#Include <Word.au3>
#Include <Clipboard.au3>
#Include <Crypt.au3>
#Include <Date.au3>
#Include <Excel.au3>
#Include <FTPEx.au3>
#Include <IE.au3>
#Include <Memory.au3>
#include <ScreenCapture.au3>
#Include <Color.au3>
#Include <Constants.au3>
#Include <Math.au3>
#Include <Misc.au3>
#Include <Security.au3>
#Include <Timers.au3>
;#Include <L:\AutoitDev\MyLib\LibTool.au3>
;***************************************************************
Global $iTab
Global $Offset = 0
Global $Resultat,$Cline = ""
Global $Sline = "nul"
Global $SlineTab
Global $SlineTabSize
Global $aArgs[$cmdline[0]]
Global $LastParam, $IfTXT
Global $SplitStr,$Write = 0
Global $DefaultINI = "au.ini"
Global $Equal = ""
Global $iSeq
Global $sIni = @ScriptDir & "\au.ini"
Global $tst_ini
;***************************************************************
If $cmdline[0] > 0 Then
$aArgs[0] = "CallArgArray"
;_ArrayDisplay($aArgs, "$aArgs")
;_ArrayDisplay($cmdline, "$cmdline")
$tst_ini = FileExists ($sIni)
if $tst_ini = 0 then _CreatINIfile()
If $cmdline[0] >= 3 then
if $cmdline[Ubound($cmdline)-2] = "=" then
$Offset = 2
$Write = 2
$Equal = $cmdline[Ubound($cmdline)-1]
EndIf
EndIf
For $i = 1 to (UBound($aArgs) - (1+$Offset))
$aArgs[$i] = $cmdline[$i+1]
$Cline = $Cline & $cmdline[$i+1]
If $i < UBound($aArgs)-(1+$Offset) Then $Cline = $Cline & ","
next
$Cline = $cmdline[1] & "(" & $Cline & ")"
Switch $cmdline[1]
Case "Rfunc"
if UBound($cmdline) = 4 then $DefaultINI = $cmdline[3]
$Cline = Rfunc($cmdline[2],$DefaultINI)
Case "Sfunc"
$Sline = Sfunc($cmdline[2],$DefaultINI)
$SlineTab = StringSplit($Sline,",")
EndSwitch
;**********************************************
if Ubound($SlineTab) = 0 then
$SlineTabSize = 1
Else
$SlineTabSize = Ubound($SlineTab) -1
endif
;**********************************************
For $iSeq = 1 to $SlineTabSize
_AssignGlobalVar()
if Ubound($SlineTab) > 0 then
$Cline = Rfunc($SlineTab[$iSeq],$DefaultINI)
If $Write > 0 then ConsoleWrite(@CRLF)
endif
$SplitStr = StringSplit($Cline,">")
if @error = 0 then
$Write = 1
else
$SplitStr = StringSplit($Cline,"=")
if @error = 0 then
$Write = 2
$Equal = $SplitStr[$SplitStr[0]]
Endif
endif
$Cline = $SplitStr[1]
$Resultat = Execute($Cline)
if $Resultat = "" then $Resultat = "v@lue:" & @error
if VarGetType($Resultat) = "Array" then
For $iTab = 0 to (UBound($Resultat)-1)
Switch $Write
Case 0
ConsoleWrite($Resultat[$iTab] & @CRLF )
Case 1
_FileW(StringStripWS($SplitStr[2], 8),$Resultat[$iTab])
Case 2
Wvar($Equal & ($iTab+1) ,$Resultat[$iTab])
EndSwitch
next
$Write = 0
else
Switch $Write
Case 0
ConsoleWrite($Resultat)
Case 1
_FileW(StringStripWS($SplitStr[2], 8),$Resultat)
Case 2
Wvar($Equal,$Resultat)
EndSwitch
EndIf
next
EndIf
;***************************************************************
Func Wvar($iVarName,$iVarValue,$iFiles = "au.ini")
local $iVar_W_Res
$iVar_W_Res = IniWrite(@ScriptDir & "\"& $iFiles, "Variables",$iVarName, $iVarValue)
Return $iVar_W_Res
EndFunc
Func Rvar($iVarName,$iFiles = "au.ini")
local $iVar_R_Res
$iVar_R_Res = IniRead(@ScriptDir &"\"& $iFiles, "Variables",$iVarName, "NotFound")
Return $iVar_R_Res
EndFunc
Func Rfunc($fVarName,$fFiles = "au.ini")
local $fVar_R_Res
$fVar_R_Res = IniRead(@ScriptDir & "\"& $fFiles, "Function",$fVarName, "NotFound")
Return $fVar_R_Res
EndFunc
Func Sfunc($fVarName,$fFiles = "au.ini")
local $fVar_R_Res
$fVar_R_Res = IniRead(@ScriptDir & "\"& $fFiles, "Sequence",$fVarName, "NotFound")
Return $fVar_R_Res
EndFunc
Func _AssignGlobalVar($aFiles = "au.ini")
Local $Tab_var
$Tab_var = IniReadSection (@ScriptDir & "\"& $aFiles, "Variables")
if $Tab_var <> 1 then
For $iVar = 1 To $Tab_var[0][0]
Assign ( $Tab_var[$iVar][0],$Tab_var[$iVar][1],2)
Next
Endif
EndFunc
Func _FileW($FilneName,$MyRes)
Local $file
$file = FileOpen(@ScriptDir & "\"& $FilneName, 9)
If $file = -1 Then
MsgBox(0, "Error", "Unable to open file.")
Exit
EndIf
FileWrite($file, $MyRes & @CRLF)
FileClose($file)
EndFunc
Func Input($Message = "Question?", $StarPass = "")
Local $Answer
Local $Title = "Input Box"
If $StarPass <> "" then $Title = "Security Box"
$Answer = InputBox($Title, $Message, "", $StarPass,190, 125,800, 300)
Return $Answer
EndFunc
Func _CreatINIfile()
IniWriteSection($sIni, "Sequence", "")
IniWriteSection($sIni, "Variables", "")
IniWriteSection($sIni, "Function", "")
Endfunc
Utilisation :
Afin de pouvoir reproduire les exemples suivant il est conseillé de telecharger l’archive Zip contenant
les source et un executable et le fichier INI.
- Decompresser l’archive dans un repertoire.
- Ouvrir une invite de commande MsDos et placer vous sur le reperoire contenant “au.exe”
Exemple 1 : afficher un message box , l’image vous montre les differentes syntaxes.
Exemple 2 : Enregistrer 2 variables et les Additionner.
Exemple 3 : Executer une fonction pre defini dans le fichier INI, cette fonction realise une capture d’écran
Exemple 4 : Executer une sequence de fonction
cette exemple calcule la position de la souris puis additionne les coordonnée X et X ensuite le resultat est retourné.
Exemple 5 :
Ligne de commande particuliaire :
Ecrire dans un fichier text : au number(12+12) > toto.txt
Enregistrer la valeur retourner entemp que variable : au number(12+12) = titi