Préambule
On peut automatiser certaines tâches de PowerAMC ??en exécutant des scripts VBScript ou en accédant aux objets de PowerAMC à l’aide de COM et l’utilisation des langages C # ou VB.
Librairies de fonctions, sous-routines
Vous désirez vous monter une librairie de quelques scripts utiles afin de tirer parti du code partagé. C’est facile en C # ou en VB mais pas tellement évident dans l’environnement VBScript.
Nous allons donc discuter d’une technique de script qui peut être utile, mais aussi un peu délicat. Pour ceux d’entre vous qui ont travaillé avec des langages de programmation compilés comme C #, Visual Basic, C ++, et bien d’autres, ce sera comme un vieil ami qui peut vous rendre la vie plus facile, mais qui peut aussi créer une certaine confusion. Ce que nous allons faire est de rédiger des fonctions et sous-programmes dans un script, et appeler ces fonctions et sous-programmes d’un autre script.
Pourquoi est-ce délicat? Parce que le langage VBScript est un langage interprété. Dans les langages compilés, tel que C# l’on peut appelé une instruction « include ». Ces « includes » permettent de tirer des objets en provenance d’autres fichiers sources, tels que des bibliothèques DLL généralement. Ces bibliothèques contiennent des classes, des méthodes, des fonctions, des sous-programmes, et ainsi de suite que vous pouvez ensuite utiliser dans votre programme. Ce que nous allons vous montrer ici est un moyen de contourner cela, et ainsi simuler une façon d’inclure une fonction ou une sous-routine et ainsi les rendre disponibles dans des scripts multiples.
À titre d’exemple vous créez une fonction appelée Delai qui permet de patienter durant un certain nombre de seconde…
lib Delai.vbs:
fonction Delai
… Bla bla bla …
end function
Vous pouvez référencer cette fonction au début d’un programme d’appel principal, puis appeler la fonction que vous voulez utiliser dans le programme principal
ProgrammePrincipal.vbs:
‘ Permet de simuler un include file (permet d’accèder à des objets externes)
ExecuteGlobal CreateObject (« Scripting.FileSystemObject »). OpenTextFile (« lib Delai.vbs« ). readAll ()
Delai (10) ‘Pause durant 10 secondes
Il suffit donc de remplacer le nom de votre script « .vbs » dans l’appel « OpenTextFile ».
De plus vous pouvez exécuter cette ligne de programmation plusieurs fois afin d’y inclure plus d’un fichier « .vbs ».
Note :
1) Par défaut le chemin du répertoire afin d’aller lire le fichier « .vbs » dans la librairie est relatif au répertoire courant.
2) Vous pouvez remplacer la ligne ci-dessus par les lignes ci-dessous. Les différence sont l’ajout du paramètre « ForReading » qui est le paramètre par défaut, et le remplacement de ExcuteGlobal par Execute
Dim ForReading, ForWriting, ForAppending
ForReading = 1 ‘Open a file for reading only. You can’t write to this file.
ForWriting = 2 ‘Open a file for writing.
ForAppending = 8 ‘Open a file and write to the end of the file.
‘Inclure autres sous routines
Set objFSO = CreateObject(« Scripting.FileSystemObject »)
Set objFile = objFSO.OpenTextFile((« lib Delai.vbs« , ForReading)
Execute objFile.ReadAll()
3) Tous les énoncés utilisés avec ExecuteGlobal sont exécutées dans l’espace global du script. Cela permet a du code de programmation d’être ajouté au programme de sorte que la procédure en cours puisse y accéder. Par exemple, une instruction VBScript CLASS peut être appelé lors de l’exécution et des fonctions peuvent ensuite créer de nouvelles instances de la classe.
L’ajout des procédures et des classes à l’exécution peut être utile, mais introduit également la possibilité d’écraser des variables, des fonctions existante lors de l’exécution. Parce que cela peut causer des problèmes de programmation important, il faut prendre soin lors de l’utilisation de la déclaration ExecuteGlobal. Si vous n’avez pas besoin d’accéder à une variable ou à une fonction en dehors d’une procédure, utilisez l’instruction Execute qui n’affecte que l’espace de noms de la fonction appelante.