IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

VBScript Discussion :

VBScript - exec MsgBox tout en continuant l'exec code - multi-process ?


Sujet :

VBScript

  1. #1
    Membre à l'essai
    Femme Profil pro
    Inscrit en
    Décembre 2011
    Messages
    36
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Belgique

    Informations forums :
    Inscription : Décembre 2011
    Messages : 36
    Points : 20
    Points
    20
    Par défaut VBScript - exec MsgBox tout en continuant l'exec code - multi-process ?
    Bonjour,

    Je voudrais afficher un message à l'utilisateur tout en continuant l'exécution du code.
    Comment faire?
    Dans mon code ci-dessous l'utilisateur est averti que la 1/2 du temps est passée, mais tant qu'il n'a pas cliqué OK l'éxécution code ne continue pas.

    Merci
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    alarmDansMin  = Trim ( InputBox( "Dans combien de minutes l'alarme?", , "40") )
    alarmDansmmsec = alarmDansMin*60*1000
     
    WScript.sleep  alarmDansmmsec/2
     
    MsgBox "Reste " & alarmDansMin/2 & "minutes !"
     
    WScript.sleep  alarmDansmmsec/2
     
    MsgBox "FINI"

  2. #2
    Rédacteur
    Avatar de omen999
    Profil pro
    Inscrit en
    Février 2006
    Messages
    1 296
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 1 296
    Points : 3 549
    Points
    3 549
    Par défaut
    salut,
    il n'existe pas de moyen d'afficher nativement un dialogue non modal en vbs sous wsh
    les solutions "non natives" ne sont pas très simples, mais les interfaces HTA restent l'approche la plus classique
    un article complet ici
    sinon, il se trouve que je mets la dernière main à une contribution de code "d'ultimate progressbar" pour illustrer un futur article sur l'undocumented wsh/vbs
    (instructions et fonctions inconnues, prog hta sans fichier hta, toussa...)
    et qui pourrait répondre à ton problème
    stay tuned
    nomen omen, nemo non omen - Consultez la FAQ VBScript et les cours et tutoriels VBScript
    le plus terrible lorsqu'une voiture renverse un piéton, c'est que ce sont les freins qui hurlent. (ramón)
    pas de questions techniques par mp

  3. #3
    Expert éminent
    Avatar de hackoofr
    Homme Profil pro
    Enseignant
    Inscrit en
    Juin 2009
    Messages
    3 839
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Juin 2009
    Messages : 3 839
    Points : 9 222
    Points
    9 222
    Par défaut

    Je crois qu'il faut utiliser la méthode Ws.popup au lieu du MsgBox
    Un exemple d'utilisation
    Votre Code devient alors, quelque chose comme ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    Titre = "Alarme"
    Set ws = CreateObject("wscript.Shell")
    alarmDansMin  = Trim ( InputBox( "Dans combien de minutes voulez-vous déclenchez l'alarme ?",Titre, "40") )
    If alarmDansMin = ""  Then Wscript.Quit
    If Not IsNumeric(alarmDansMin) Then
        ws.Popup "Il faut Taper un Nombre !","2",Titre,0+16 'Afficher un Popup durant 2 secondes puis quitte le script 
        Wscript.Quit
    End if 
    sMessage = "Reste " & alarmDansMin/2 & " minutes !"
    alarmDansmmsec = alarmDansMin*60*1000 'en millisecondes
    alaramSecondes = alarmDansMin*60 'en secondes
    WScript.sleep  alarmDansmmsec/2
    ws.Popup sMessage,alaramSecondes/2,Titre,0+64'Afficher un Popup durant alaramSecondes/2 secondes
    ws.Popup "C'est FINI !","5",Titre,0+64 'Afficher un Popup durant 5 secondes puis quitte le script

  4. #4
    Rédacteur
    Avatar de omen999
    Profil pro
    Inscrit en
    Février 2006
    Messages
    1 296
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 1 296
    Points : 3 549
    Points
    3 549
    Par défaut
    Je crois qu'il faut utiliser la méthode Ws.popup au lieu du MsgBox
    heu non...
    popup peut juste créer une temporisation de l'affichage mais ça reste un dialogue modal, c'est à dire que le code qui suit la méthode popup ne sera pas exécuté tant que le dialogue n'est pas fermé
    nomen omen, nemo non omen - Consultez la FAQ VBScript et les cours et tutoriels VBScript
    le plus terrible lorsqu'une voiture renverse un piéton, c'est que ce sont les freins qui hurlent. (ramón)
    pas de questions techniques par mp

  5. #5
    Expert éminent
    Avatar de hackoofr
    Homme Profil pro
    Enseignant
    Inscrit en
    Juin 2009
    Messages
    3 839
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Juin 2009
    Messages : 3 839
    Points : 9 222
    Points
    9 222
    Par défaut

    J'ai trouvé dans le net une fonction HTABox et je l'ai combiné avec le code précédent et ça donne ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    Titre = "Alarme"
    Set ws = CreateObject("wscript.Shell")
    alarmDansMin  = Trim ( InputBox( "Dans combien de minutes voulez-vous déclenchez l'alarme ?",Titre, "40") )
    If alarmDansMin = ""  Then Wscript.Quit
    If Not IsNumeric(alarmDansMin) or alarmDansMin <= 1 Then
        ws.Popup "Il faut Taper un Nombre strictement supérieur à 1 !","2",Titre,0+16 'Afficher un Popup durant 2 secondes puis quitte le script 
        Wscript.Quit
    End if 
    sMessage = "Reste " & alarmDansMin/2 & " minutes !"
    alarmDansmmsec = alarmDansMin*60*1000 'en millisecondes
    alaramSecondes = alarmDansMin*60 'en secondes
    nMinutes = alarmDansMin/2
    WScript.sleep  alarmDansmmsec/2
    nSeconds = 0
    sMessage = "<font color=red size=4><b>ALARME</b></font>"
    ' Open a chromeless window with message
    with HTABox("lightBlue", 175, 450, 400,100)
        .document.title = "Notification"
        .msg.innerHTML = sMessage
        do until .done.value or (nMinutes + nSeconds < 1)
            .msg.innerHTML = sMessage & "<br>" & nMinutes & ":" & Right("0"&nSeconds, 2) _
            & " restantes <br>"
            wsh.sleep 1000 ' milliseconds
            nSeconds = nSeconds - 1
            if nSeconds < 0 then 
                if nMinutes > 0 then
                    nMinutes = nMinutes - 1
                    nSeconds = 59
                end if
            end if
        loop
        .done.value = true
        .close
    end with
    ws.Popup "C'est FINI !","5",Titre,0+64 'Afficher un Popup durant 5 secondes puis quitte le script
    'wscript.echo "process goes here ..."
    ' script ends here
    Function HTABox(sBgColor, h, w, l, t)
        Dim IE, HTA, sCmd, nRnd
        randomize : nRnd = Int(1000000 * rnd)
        sCmd = "mshta.exe ""javascript:{new " _
        & "ActiveXObject(""InternetExplorer.Application"")" _
        & ".PutProperty('" & nRnd & "',window);" _
        & "window.resizeTo(" & w & "," & h & ");" _
        & "window.moveTo(" & l & "," & t & ")}"""
        Set WshShell = WScript.CreateObject("WScript.Shell")
        with CreateObject("WScript.Shell")
            .Run sCmd, 1, False
            do until .AppActivate("javascript:{new ") : WSH.sleep 10 : loop
            end with  'WSHShell
            For Each IE In CreateObject("Shell.Application").windows
                If IsObject(IE.GetProperty(nRnd)) Then
                    set HTABox = IE.GetProperty(nRnd)
                    IE.Quit
                    HTABox.document.title = "HTABox"
                    HTABox.document.write _
                    "<HTA:Application contextMenu=no border=thin " _
                    & "minimizebutton=no maximizebutton=no sysmenu=no />" _
                    & "<body scroll=no style='background-color:" _
                    & sBgColor & ";font:normal 10pt Arial;" _
                    & "border-Style:inset;border-Width:3px'" _
                    & "onbeforeunload='vbscript:if not done.value then " _
                    & "window.event.cancelBubble=true:" _
                    & "window.event.returnValue=false:" _
                    & "done.value=true:end if'>" _
                    & "<input type=hidden id=done value=false>" _
                    & "<center><span id=msg>&nbsp;</span><br>" _
                    & "<input type=button id=btn1 value=' OK ' "_
                    & "onclick=done.value=true><center></body>"
                    HTABox.btn1.focus
                    Exit Function
                End If
            Next
            MsgBox "HTA window not found."
            wsh.quit
    End Function

Discussions similaires

  1. supprimer toutes les balises d'un code html (regex?)
    Par le y@m's dans le forum Langage
    Réponses: 5
    Dernier message: 21/01/2014, 10h08
  2. [AC-2007] msgbox modal laisse continuer la saisie
    Par Marcello5255 dans le forum VBA Access
    Réponses: 4
    Dernier message: 13/09/2012, 15h19
  3. API, toutes les villes de france, codes postaux
    Par mmike57 dans le forum Bibliothèques et frameworks
    Réponses: 0
    Dernier message: 30/06/2012, 18h54
  4. Réponses: 11
    Dernier message: 03/05/2009, 17h52
  5. Réponses: 11
    Dernier message: 26/06/2008, 22h41

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo