[R] _Singleton ()
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] _Singleton ()
Bonjour,
Pourrirez-vous éclairer ma lanterne sur cette fonction ?
La doc nous dit : String to identify the occurrence of the script
Mais encore ? Est ce le nom du script ? Si oui, une fois compilé et que je change le nom de l'exe ?
Merci.
Pourrirez-vous éclairer ma lanterne sur cette fonction ?
La doc nous dit : String to identify the occurrence of the script
Mais encore ? Est ce le nom du script ? Si oui, une fois compilé et que je change le nom de l'exe ?
Merci.
Modifié en dernier par DimVar le sam. 29 déc. 2018 11:02, modifié 1 fois.
N'évoquons pas la pierre, les jeunes risqueraient d'en poire !
- mikell
- Modérateur
- Messages : 5805
- Enregistré le : dim. 29 mai 2011 16:32
- Localisation : Deep Cévennes
- Status : Hors ligne
Re: [..] _Singleton ()
Essaye
StringTrimRight(@ScriptName, 4)
" L'échec est le fondement de la réussite. " (Lao-Tseu )
" Plus ça rate, plus on a de chances que ça marche " (les Shadoks )
" Plus ça rate, plus on a de chances que ça marche " (les Shadoks )
Re: [..] _Singleton ()
Ben ca va me donner le nom du fichier *.au3, et ?
N'évoquons pas la pierre, les jeunes risqueraient d'en poire !
- orax
- Modérateur
- Messages : 1469
- Enregistré le : lun. 23 mars 2009 04:50
- Localisation : ::1
- Contact :
- Status : Hors ligne
Re: [..] _Singleton ()
Je crois que monsieur le chat a lu trop vite ta question.
$sOccurrenceName est une chaîne quelconque, ce n'est pas forcément le nom du script.
Je compile le code suivant en A.exe et en B.exe.
Premier cas. Je n'utilise que A.exe.
$sOccurrenceName est une chaîne quelconque, ce n'est pas forcément le nom du script.
Je compile le code suivant en A.exe et en B.exe.
Code : Tout sélectionner
_Singleton(@ScriptName)
MsgBox($MB_SYSTEMMODAL, "", "test")
- J'exécute A.exe. Le message "test" s'affiche. Je ne ferme pas le script. À ce stade, il y a une instance de A.exe (avec $sOccurrenceName = "A.exe").
- J'exécute à nouveau A.exe. Il y a donc deux instances de A.exe (avec $sOccurrenceName = "A.exe"). _Singleton détecte qu'il y a déjà une instance du script (avec $sOccurrenceName = "A.exe"). Le script s'arrête. Le message "test" NE s'affiche PAS.
- J'exécute A.exe. Le message "test" s'affiche. Je ne ferme pas le script. À ce stade, il y a une instance de A.exe (avec $sOccurrenceName = "A.exe"). Jusque là, aucun changement.
- J'exécute B.exe. Il y a donc une instance de A.exe (avec $sOccurrenceName = "A.exe") et une instance de B.exe (avec $sOccurrenceName = "B.exe"). _Singleton voit qu'il n'y a qu'une seule instance de B.exe. Le script NE s'arrête PAS. Le message "test" s'affiche.
_Singleton("test", 1)
De petits détails peuvent faire toute la différence. — Quand la boule de neige commence à rouler… poussez-la. (Columbo)
Re: [..] _Singleton ()
Merci Orax pour les details.
J'ai du mal à appréhender "chaine constante", qu'entends tu par là ?
J'ai du mal à appréhender "chaine constante", qu'entends tu par là ?
N'évoquons pas la pierre, les jeunes risqueraient d'en poire !
- orax
- Modérateur
- Messages : 1469
- Enregistré le : lun. 23 mars 2009 04:50
- Localisation : ::1
- Contact :
- Status : Hors ligne
Re: [..] _Singleton ()
Je ne sais pas si le terme "chaîne constante" est bien choisi, mais il n'y a rien de compliqué. Je voulais simplement dire une chaîne de caractères qui ne varie pas d'une exécution du script à l'autre. La valeur de @ScriptName est susceptible de changer et elle n'est pas connue avant l'exécution du script. Alors que la chaîne "blabla...", par exemple, ne changera pas.
Code : Tout sélectionner
$a = "blabla..." ; chaîne de caractères "constante"
$b = @AutoItPID ; cette valeur change à chaque exécution du script
De petits détails peuvent faire toute la différence. — Quand la boule de neige commence à rouler… poussez-la. (Columbo)
Re: [..] _Singleton ()
Ok, c'est plus clair, merci.
N'évoquons pas la pierre, les jeunes risqueraient d'en poire !
- Tlem
- Site Admin
- Messages : 11349
- Enregistré le : ven. 20 juil. 2007 20:00
- Localisation : Bordeaux
- Status : Hors ligne
Re: [R] _Singleton ()
Bonjour.
Si vous souhaitez éviter certains problèmes concernant le fait que le script peut avoir été renommé voir ses ressources modifiées, il serait sans doute judicieux d'utiliser une structure de ce type :
Si vous souhaitez éviter certains problèmes concernant le fait que le script peut avoir été renommé voir ses ressources modifiées, il serait sans doute judicieux d'utiliser une structure de ce type :
Code : Tout sélectionner
#include <Misc.au3>
Global $ScriptName = "Script Test _Singleton()"
Global $ScriptVersion = "1.0.0"
If _Singleton($ScriptName, 1) = 0 Then
MsgBox(16, "Attention", "Impossible de lancer ce programme plus d'une fois ! Veuillez fermer l'autre occurence.")
Exit
EndIf
MsgBox(32, @ScriptName & " " & $ScriptVersion, "Bievenue dans " & $ScriptName & " Version " & $ScriptVersion)
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é".