[..] Enlever la pause du MsgBox

Aide et conseils concernant AutoIt et ses outils.
Règles du forum
.
Répondre
mouch
Niveau 1
Niveau 1
Messages : 13
Enregistré le : jeu. 01 sept. 2011 10:55
Status : Hors ligne

[..] Enlever la pause du MsgBox

#1

Message par mouch »

Bonjour,

J'ai réalisé un script qui affiche régulièrement des msgbox, cela met donc mon script en pause a chaque fois.
Pour amoindrir le problème j'ai fait ceci :

Code : Tout sélectionner

MsgBox(4096, "Titre", "texte", 1)
Quelqu'un saurait me dire comment faire pour qu'il n'y ait plus du tout de problème ? ^^
merci pour toute aide.
mouch
Niveau 1
Niveau 1
Messages : 13
Enregistré le : jeu. 01 sept. 2011 10:55
Status : Hors ligne

Re: [..] Enlever la pause du MsgBox

#2

Message par mouch »

j'ai trouvé la réponse a ma question

Code : Tout sélectionner

Run(@AutoItExe & ' /AutoIt3ExecuteLine  "MsgBox(0, ''Je te dis coucou'', ''COUCOU'')"')
Avatar du membre
ZDS
Membre émérite
Membre émérite
Messages : 554
Enregistré le : jeu. 10 juin 2010 10:35
Localisation : 22300 Cul-d'chouette Langue-de-vache
Status : Hors ligne

Re: [..] Enlever la pause du MsgBox

#3

Message par ZDS »

Bonjour,

Il n'y a pas de méthode miracle, le MsgBox est une ligne bloquante très utile pour les développeurs.
Mais il y a moyen de contourner le problème en exécutant la commande dans un processus différent (qui donc laisse le processus d'origine continuer son boulot) :

Code : Tout sélectionner

Func MsgBoxNoWait($flag, $title, $text, $timeout=0, $hwnd="")
    Local $escapedTitle = StringReplace($title, '"'&"'", "")
    Local $escapedText  = StringReplace($text,  '"'&"'", "")
    Local $command = "MsgBox("
    $command &= $flag
    $command &= ", '"&$escapedTitle&"'"
    $command &= ", '"&$escapedText&"'"
    If $timeout > 0 Then $command &= ", "&$timeout
    If $hwnd <> "" Then $command &= ", "&$hwnd
    $command &= ")"
    Run(@AutoItExe & ' /AutoIt3ExecuteLine  "'&$command&'"')
EndFunc
ATTENTION !!!
- Ce type de méthode ne coupe pas la MsgBox quand le processus se termine, à utiliser avec modération donc.
- Pour éviter les problèmes d'injection de code, il vaut mieux ne pas utiliser du tout de guillemets (") ou de quote (').
- Cette façon de faire implique d'avoir installé AutoIt, ne fonctionne probablement pas pour les scripts compilés où AutoIt n'est pas installé
- Il apparait des ralentissements dans le processus original lors du lancement de la fonction SUR CERTAINES MACHINES (Sous xp notamment, à part ça aucun souci constaté sur une VM Windows Seven Pro 64bits)

A bientôt !

EDIT: C'est à peu près ce que je proposais en fait ^^ Mais encapsulé dans une fonction plus facile à utiliser, comme une MsgBox originale :)
ZDS : Chef de projet du nAiO (logiciel AutoIt gratuit sous licence CC 4.0 BY-NC-SA)
Tout problème a une solution, donc si il y a pas d'solution, c'est qu'il y a pas d'problème !
Eldes
Niveau 2
Niveau 2
Messages : 29
Enregistré le : lun. 20 déc. 2010 13:08
Status : Hors ligne

Re: [..] Enlever la pause du MsgBox

#4

Message par Eldes »

Personnellement j utilise la consolwrite() afin de suivre l avancement de mes programmations (utilisé F8 afin de la faire aparaitre)
Avatar du membre
Tlem
Site Admin
Site Admin
Messages : 11830
Enregistré le : ven. 20 juil. 2007 21:00
Localisation : Bordeaux
Status : Hors ligne

Re: [..] Enlever la pause du MsgBox

#5

Message par Tlem »

Tout comme Eldes, j'utilise ConsoleWrite.
D’ailleurs, je ne vois pas l’intérêt d'utiliser une MsgBox dans un cas comme celui-ci puisque le but est de ne pas bloquer le script !!!
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é".
Avatar du membre
Iste
Niveau 11
Niveau 11
Messages : 1870
Enregistré le : jeu. 04 déc. 2008 14:21
Localisation : 76
Status : Hors ligne

Re: [..] Enlever la pause du MsgBox

#6

Message par Iste »

Bon mise a part le fait que utiliser des msgbox pour débugger c'est.... bof, je voulais juste revenir sur ce point :
ZDS a écrit :- Cette façon de faire implique d'avoir installé AutoIt, ne fonctionne probablement pas pour les scripts compilés où AutoIt n'est pas installé
La macro @AutoItExe renvoi l'exe AutoIt pour un script non compilé et l'exe compilé sinon.
On peut tout a fait se servir d'un exe compilé comme interpréteur.
En gros, c'est une "bonne" solution.
Signez ici
Répondre