[R] Nouvelle variable utilisable pour plusieurs scripts ?
Règles du forum
- Merci de consulter la section "Règles du forum" et plus particulièrement "Règles et Mentions Légales du site autoitscript.fr" avant d'écrire un message.
[R] Nouvelle variable utilisable pour plusieurs scripts ?
Bonjour
Je m'explique. Est-il possible de définir une variable pour plusieurs scripts sans devoir la définir pour chaque script.
Merci
Je m'explique. Est-il possible de définir une variable pour plusieurs scripts sans devoir la définir pour chaque script.
Merci
Modifié en dernier par eln le sam. 01 sept. 2007 11:54, modifié 1 fois.
-
- Niveau 11
- Messages : 1826
- Enregistré le : lun. 23 juil. 2007 12:31
- Localisation : Bureau
- Status : Hors ligne
Pour cela tu devra créer un fichié supplémentaire tanouvellefonction avec l'extension au3
tu y indique #include-once au début
tu y inscrit t'a variable ou divers fonction
et pour appeler le fichier nouvellefonction tu indique dans ton script principal le nom de ton fichier en include
#include 'manouvellefonction'
ou bien tu prend le fichier include-once et tu le met dans le dossier include comme çà pas trop de soucis ..
dans ton script tu indique comme pour les include normal avec le caractère <
les point au3 ne passe pas du tout
met le principe et a l'identique que celle utilisé pour les includes déjà presente dans autoit (pour certain fichier)
mais je me trompe peut-être suis novice au bout de ligne ^^'
tu y indique #include-once au début
tu y inscrit t'a variable ou divers fonction
et pour appeler le fichier nouvellefonction tu indique dans ton script principal le nom de ton fichier en include
#include 'manouvellefonction'
ou bien tu prend le fichier include-once et tu le met dans le dossier include comme çà pas trop de soucis ..
dans ton script tu indique comme pour les include normal avec le caractère <
Code : Tout sélectionner
#include<tanouvellefonction>

met le principe et a l'identique que celle utilisé pour les includes déjà presente dans autoit (pour certain fichier)
mais je me trompe peut-être suis novice au bout de ligne ^^'
Le problème est que je pensais déclarer ma variable par une fonction du type :
Et ensuite utiliser cette variable pour indiquer le chemin à plusieurs scripts. A priori ce ne serait pas réalisable avec ta solution.
Code : Tout sélectionner
$var = FileSelectFolder("Choose a folder.", "")
- Tlem
- Site Admin
- Messages : 11784
- Enregistré le : ven. 20 juil. 2007 21:00
- Localisation : Bordeaux
- Status : Hors ligne
Les autres scripts que vous lancé, sont-ils dépendant du premier (Celui qui contient l'utilisation du FileSelectFolder) ?
Font-il partie des includes ?
Si oui, alors pas de problème (Enfin ... je crois
)
Si non, il y à d'autres solutions :
- Le stockage de cette variable dans un fichier texte.
- Le stockage de cette variable dans un fichier au3 (Placé dans les includes des autres scripts) (Non fonctionnel si compilation)
- Dans le presse papier.
- Dans une variable système de Windows.
et le top du top :
- Dans la base de registre (Bien plus simple que n'importe quelle solution).
Exemple :
Font-il partie des includes ?
Si oui, alors pas de problème (Enfin ... je crois

Si non, il y à d'autres solutions :
- Le stockage de cette variable dans un fichier texte.
- Le stockage de cette variable dans un fichier au3 (Placé dans les includes des autres scripts) (Non fonctionnel si compilation)
- Dans le presse papier.
- Dans une variable système de Windows.
et le top du top :
- Dans la base de registre (Bien plus simple que n'importe quelle solution).
Exemple :
Code : Tout sélectionner
$var = FileSelectFolder("Choose a folder.", "")
RegWrite("HKEY_CURRENT_USER\Software\MonSoft", "Dossier", "REG_MULTI_SZ", $var)
$res = RegRead("HKEY_CURRENT_USER\Software\MonSoft", "Dossier")
Msgbox(64,"Mon dossier",$res)
; Si necessaire, à la fin du script (Pour nettoyer la 'variable') :
RegDelete ("HKEY_CURRENT_USER\Software\MonSoft")
Thierry
Rechercher sur le forum ----- Les règles du forum
Le "ça ne marche pas" est une conséquence commune découlant de beaucoup trop de raisons potentielles ...
Une idée ne peut pas appartenir à quelqu'un. (Albert Jacquard) tiré du documentaire "Copié n'est pas volé".
Rechercher sur le forum ----- Les règles du forum
Le "ça ne marche pas" est une conséquence commune découlant de beaucoup trop de raisons potentielles ...
Une idée ne peut pas appartenir à quelqu'un. (Albert Jacquard) tiré du documentaire "Copié n'est pas volé".
Pour l'instant, j'essaye d'améliorer mes scripts existants ayant découvert AutoIt depuis peu et ne connaissant pas encore toutes les possibilités.Tlem a écrit :Les autres scripts que vous lancé, sont-ils dépendant du premier (Celui qui contient l'utilisation du FileSelectFolder) ?
Font-il partie des includes ?
Si oui, alors pas de problème (Enfin ... je crois)
Chaque application a son script.
Je lance un script qui les lance l'un après l'autre.
Code : Tout sélectionner
RunWait ("AutoIt3.exe 7zip.au3")
RunWait ("AutoIt3.exe AdobeReader.au3")
....
Code : Tout sélectionner
FileChangeDir ("I:\Soutien\Commun")
RunWait ("7-Zip 4.42\7z442.exe /S")
- Tlem
- Site Admin
- Messages : 11784
- Enregistré le : ven. 20 juil. 2007 21:00
- Localisation : Bordeaux
- Status : Hors ligne
Si je puis me permettre, je vous suggère 2 approches.
La première, si vous tenez absolument à avoir un fichier au3 par programme à installer.
Modifier vos scripts au3 comme ceci (Pour 7zip par exemple) :
Ensuite dans votre script principal, rajouter chaque fichier dans les includes, et appeler simplement la fonction.
Comme ceci :
Bon tout ceci n'est quand même pas très logique, alors je vous conseil cette deuxième approche :
Un fichier contenant tout les codes d'installation :
Install.au3 :
Ensuite dans votre programme principal, vous n'avez qu'a appeler les fonctions une a une.
Script_Principal.au3
Dans ce genre de configuration, vous pouvez aussi envoyer des paramètres aux fonctions que vous appeler (Le dossier ou ce trouve les fichiers par exemple).
Il vous faudra modifier les scripts comme ceci :
Install.au3 :
Script_Principal.au3
Voilà, j'espère que ces quelques exemples vous apporterons un peut plus de lumière sur les possibilités qui vous sont offertes !
La première, si vous tenez absolument à avoir un fichier au3 par programme à installer.
Modifier vos scripts au3 comme ceci (Pour 7zip par exemple) :
Code : Tout sélectionner
Func Install_7zip()
FileChangeDir ("I:\Soutien\Commun\")
RunWait ("7-Zip 4.42\7z442.exe /S")
EndFunc
Comme ceci :
Code : Tout sélectionner
#Include <7zip.au3>
; un peut de code
; ...
; Ici j'appel ma fonction d'installation de 7zip.
Install_7zip()
Un fichier contenant tout les codes d'installation :
Install.au3 :
Code : Tout sélectionner
#include-once
; On mémorise le chemin d'accès aux programmes d'install
$DirInstall="I:\Soutien\Commun\"
Func Install_7zip()
RunWait ($DirInstall & "7-Zip 4.42\7z442.exe /S")
EndFunc
Func Install_Rar()
RunWait ($DirInstall & "Winrar 3.70\Winrar.exe /S")
EndFunc
Script_Principal.au3
Code : Tout sélectionner
#Include <Install.au3>
; un peut de code
; ...
Install_7zip()
Install_Rar()
Il vous faudra modifier les scripts comme ceci :
Install.au3 :
Code : Tout sélectionner
#include-once
Func Install_7zip($DirInstall)
RunWait ($DirInstall & "7-Zip 4.42\7z442.exe /S")
EndFunc
Func Install_Rar($DirInstall)
RunWait ($DirInstall & "Winrar 3.70\Winrar.exe /S")
EndFunc
Code : Tout sélectionner
#Include <Install.au3>
$DirInstall = FileSelectFolder("Choose a folder.", "")
Install_7zip($DirInstall)
Install_Rar($DirInstall)
Thierry
Rechercher sur le forum ----- Les règles du forum
Le "ça ne marche pas" est une conséquence commune découlant de beaucoup trop de raisons potentielles ...
Une idée ne peut pas appartenir à quelqu'un. (Albert Jacquard) tiré du documentaire "Copié n'est pas volé".
Rechercher sur le forum ----- Les règles du forum
Le "ça ne marche pas" est une conséquence commune découlant de beaucoup trop de raisons potentielles ...
Une idée ne peut pas appartenir à quelqu'un. (Albert Jacquard) tiré du documentaire "Copié n'est pas volé".
Désolé pas du tout.Tlem a écrit :Voilà, j'espère que ces quelques exemples vous apporterons un peut plus de lumière sur les possibilités qui vous sont offertes !
Pas spécialement. L'avantage pour moi est que si un programme change de version ou le script plante, je retravaille juste le script concerné.Tlem a écrit :La première, si vous tenez absolument à avoir un fichier au3 par programme à installer.
Bon résumons, la première approche me permet de faire la même chose en un peu plus propre.
La deuxième, je suis largué. Je vais étudier cela au calme. Est-elle valable pour des scripts d'installation non silencieuse ?
Merci pour cette aide.
- Tlem
- Site Admin
- Messages : 11784
- Enregistré le : ven. 20 juil. 2007 21:00
- Localisation : Bordeaux
- Status : Hors ligne
C'est la même chose que pour des scripts indépendants, la seule différence, c'est la manière de les appeler.eln a écrit :La deuxième, je suis largué. Je vais étudier cela au calme. Est-elle valable pour des scripts d'installation non silencieuse ?
Au lieu de lancer une autre version de AutoIt a chaque lancement d'un script, vous appeler sa fonction.
L'avantage, c'est que tout est dans le même script, et les variables sont en commun.
Vous pouvez appeler les fonctions a votre grès, dans l'ordre ou le désordre (Cela n'a aucune espèce d'importance).
Pour vous y retrouvé, présenter les choses comme ceci :
Code : Tout sélectionner
#include-once
; On mémorise le chemin d'accès aux programmes d'install
$DirInstall="I:\Soutien\Commun"
; **************************************************
; Installation de 7Zip
; **************************************************
Func Install_7zip()
RunWait ($DirInstall & "7-Zip 4.42\7z442.exe /S")
EndFunc
; **************************************************
; Installation de Winrar
; **************************************************
Func Install_Rar()
RunWait ($DirInstall & "Winrar 3.70\Winrar.exe /S")
EndFunc
Thierry
Rechercher sur le forum ----- Les règles du forum
Le "ça ne marche pas" est une conséquence commune découlant de beaucoup trop de raisons potentielles ...
Une idée ne peut pas appartenir à quelqu'un. (Albert Jacquard) tiré du documentaire "Copié n'est pas volé".
Rechercher sur le forum ----- Les règles du forum
Le "ça ne marche pas" est une conséquence commune découlant de beaucoup trop de raisons potentielles ...
Une idée ne peut pas appartenir à quelqu'un. (Albert Jacquard) tiré du documentaire "Copié n'est pas volé".