Précédent   Forum du club des développeurs et IT Pro > Autres langages > Général Visual Basic 6 et VBScript > VBScript
VBScript Le forum d'entraide sur VBScript. Avant de poster -> La FAQ VBScript
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse
 
Outils de la discussion
Publicité
'
Vieux 27/12/2012, 12h32   #1
livebe
Invité de passage
 
Femme
Inscription : décembre 2011
Messages : 11
Détails du profil
Informations personnelles :
Sexe : Femme
Localisation : Belgique

Informations forums :
Inscription : décembre 2011
Messages : 11
Points : 0
Points : 0
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 :
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"
livebe est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/12/2012, 15h40   #2
omen999
Rédacteur
 
Avatar de omen999
 
Inscription : février 2006
Messages : 903
Détails du profil
Informations forums :
Inscription : février 2006
Messages : 903
Points : 2 242
Points : 2 242
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
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
omen999 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/12/2012, 20h14   #3
hackoofr
Expert Confirmé
 
Avatar de hackoofr
 
Homme Mehdi Tounisiano
Enseignant
Inscription : juin 2009
Messages : 1 636
Détails du profil
Informations personnelles :
Nom : Homme Mehdi Tounisiano
Âge : 38
Localisation : Tunisie

Informations professionnelles :
Activité : Enseignant

Informations forums :
Inscription : juin 2009
Messages : 1 636
Points : 3 709
Points : 3 709

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 :
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
hackoofr est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/12/2012, 22h29   #4
omen999
Rédacteur
 
Avatar de omen999
 
Inscription : février 2006
Messages : 903
Détails du profil
Informations forums :
Inscription : février 2006
Messages : 903
Points : 2 242
Points : 2 242
Citation:
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
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
omen999 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/12/2012, 23h32   #5
hackoofr
Expert Confirmé
 
Avatar de hackoofr
 
Homme Mehdi Tounisiano
Enseignant
Inscription : juin 2009
Messages : 1 636
Détails du profil
Informations personnelles :
Nom : Homme Mehdi Tounisiano
Âge : 38
Localisation : Tunisie

Informations professionnelles :
Activité : Enseignant

Informations forums :
Inscription : juin 2009
Messages : 1 636
Points : 3 709
Points : 3 709

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 :
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
hackoofr est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse
Outils de la discussion

Navigation rapide


Fuseau horaire GMT +2. Il est actuellement 11h39.


 
 
 
 
Partenaires

Hébergement Web