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 :

Afficher l'étape de progression du script (string) dans une notification en ouverture de session (Popup IE)


Sujet :

VBScript

  1. #1
    Membre actif Avatar de Quent2849
    Homme Profil pro
    Technicien réseau
    Inscrit en
    Mars 2013
    Messages
    32
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Technicien réseau

    Informations forums :
    Inscription : Mars 2013
    Messages : 32
    Par défaut Afficher l'étape de progression du script (string) dans une notification en ouverture de session (Popup IE)
    Bonjour à tous,

    Je vais vous exposer mon problème, je travaille sur du VBS.
    Mon entreprise ou je suis possède des Scripts d'ouverture de session Windows codé en VBS.
    Mon responsable m'a demandé de faire apparaitre une sorte de notification pour connaitre l'avancement
    du script ainsi que quelques informations sur le PC client.

    Niveau Popup j'utilise un popup IE, qui est très bien et qui rempli bien son rôle.
    J'ai donc crée une Procédure Sub StartIE(strTache, intPercent)

    strTache = Le Nom de l'étape du script
    intPercent = Le nombre de pourcent de la barre de progression

    Cela me permet d'avoir une barre de progression ou je peux vérifier quels fonctions mettent du temps à s'éxecuter,
    et aussi pour l'optimisation du VBS plus tard, mais aussi pour savoir l'avancement du VBS.


    - Mon Popup IE fonctionne très bien
    - Les Informations du PC client ressortent bien
    - Le pop IE s'ouvre à incrémentation de la valeur de "intPercent" à 0, et se ferme à < 100.

    Mon problème est le suivant:
    Je n'arrive pas à afficher la valeur de strTache dans mon PopupIE.
    A savoir que la j'ai juste les informations de l'entreprise, et en dessous la barre
    de progression.
    Je vous met mon bout de code pour mieux comprendre:


    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
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
     
    Dim objIE, objDocument
    Set objDocument = Nothing
    Set objIE = Nothing
     
    ' *** Fonction pour attendre l'execution d'internet Explorer 
    Function WaitForLoad(obj)
    Do While objIE.Busy
    Loop
    Do While obj.readyState=4
    Loop
    wscript.sleep 300
    End Function
     
     
     
    ' *** Fonction de la notification (popup ie + progress bar) 
    Private Sub StartIE(strTache, intPercent)
     
    Dim objWSHShell
    Set objWSHShell = WScript.CreateObject("WScript.Shell")
    objWshShell.AppActivate("Microsoft Internet Explorer")
    Set objWSHShell = Nothing
     
    	If objDocument Is Nothing Then
    		If ((Cint(intPercent) >= 0) And (Cint(intPercent) <= 100)) Then
    			Set objIE = CreateObject("InternetExplorer.Application")
     
    			With objIE
    			.Offline = True
    			.AddressBar = False
    			.Height = 300
    			.Width = 620
    			.MenuBar = False
    			.StatusBar = False
    			.Silent = True
    			.ToolBar = False
    			.Navigate "about:blank"
    		    End With
     
     
    			WaitForLoad(objIE)
    			'On Error Resume Next
     
    			Set objDocument = Nothing
     
    			Do Until Not objDocument Is Nothing
    			WScript.Sleep 100
    			Set objDocument = objIE.Document
    			Loop
     
    			objIE.Visible = True	
     
     
    		With objDocument
    		.Open
    		.Writeln "<html>" ' *** Début du code HTML
    		.Writeln "<title>Ouverture de session en cours. Veuillez patienter, svp...</title> "
      		.Writeln "<body>"	
    		.Writeln "<div>(informations de l'entreprise...)</div>"
    		.Writeln "<div>" & Cstr(strTache) & "</div>" 	'Afficher l'étape de progression
    		'Barre de progression
    		.Writeln "<TABLE style='margin-left: 10px' width=500 border=1 frame=box><tr><td>"
    		.Writeln "<TABLE id=status border=1 bgcolor=Navy>"
    		.Writeln "<tr style='height: 10px;'><td></td></tr></TABLE></td></tr></TABLE></body>"
    		.Writeln "</html>"	' *** Fin du code HTML
    		.Close
                              End With
     
     
    			Else
    			Exit Sub
    		End If
    	End If
     
     
    	' ***** Fermer la barre d'etat *****
    	If Not objDocument Is Nothing Then
    		If ((Cint(intPercent) < 0) Or (Cint(intPercent) > 100)) Then
    			objIE.Visible = False
    			Set objDocument = Nothing
    			objIE.Quit
    			Set objIE = Nothing
    			Exit Sub
    		End If
    	End If
    	' ***** Met a jour la barre d'etat *****
    	If Cint(intPercent) = 0 Then
    		objDocument.all.status.width = "1%"
    		objDocument.all.status.bgcolor = "midnightblue"
    		Else
    		objDocument.all.status.width = Cstr(Cint(intPercent)) & "%"
    		objDocument.all.status.bgcolor = "midnightblue"
    	End If
    End Sub
     
     
    '****
    StartIE "Exécution 1", 0 
    wscript.sleep 1000
    '****
    StartIE "Exécution 2", 25
    wscript.sleep 1000
    '****
    StartIE "Exécution 3", 50
    wscript.sleep 1000
    '****
    StartIE "Exécution 4", 75
    wscript.sleep 1000
    '****
    StartIE "Exécution 5", 100
    wscript.sleep 1000
    StartIE "", -1
    '****

    Merci d'avance aux personnes qui prendrons du temps pour lire mon problème, et y répondre.

    Bonne journée à tous.


    Q.

    EDIT: Il manquait un "End With", & problème toujours non résolu.

  2. #2
    Membre actif Avatar de Quent2849
    Homme Profil pro
    Technicien réseau
    Inscrit en
    Mars 2013
    Messages
    32
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Technicien réseau

    Informations forums :
    Inscription : Mars 2013
    Messages : 32
    Par défaut
    Problème résolu.
    L'incrémentation et l'actualisation se fait via le code getelementbyid et .innerhtml
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    Set objElement=objDocument.getelementbyid("nomdel'id")
    objElement.innerHTML=nomdelavaleuràactualiser
    Voila si ça peux servir à quelqu'un d'autre que moi j'en serai ravis.

  3. #3
    Membre actif Avatar de Quent2849
    Homme Profil pro
    Technicien réseau
    Inscrit en
    Mars 2013
    Messages
    32
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Technicien réseau

    Informations forums :
    Inscription : Mars 2013
    Messages : 32
    Par défaut
    Code complet

    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
    77
    78
    79
    80
    81
    82
    Dim IE, objDoc
    Set objDoc = Nothing
    Set IE = Nothing
     
     
    ' ***** 
    Sub CreatepopupIE
    Set IE = WScript.CreateObject("InternetExplorer.Application")
     		With IE
    			.AddressBar = False
    			.Height = 200
    			.Width = 550
    			.MenuBar = False
    			.StatusBar = False
    			.ToolBar = False
    			.Navigate "about:blank"
    		End With	
     
    Do While IE.Busy
    WScript.Sleep 1000
    Loop
    End Sub
    ' *****
     
    ' *****
    Sub CreateHTMLpopup
    Set objDoc = IE.Document
     
    	With objDoc
    		.Open
    		.Writeln "<html>" 
    		.Writeln "<title>Ouverture de session en cours</title> "
     
      		.Writeln "<body>"	
    		.Writeln "<div style='margin-left:10px'><b>Script d'ouverture de session des Utilisateurs.</b></div>"
    		.Writeln "<br /><br /><br />"
    		.Writeln "<div style='margin-left:10px'><b id=etape></b></div>"
    		.Writeln "<TABLE style='margin-left: 10px' width=470 border=1 frame=box><tr><td>"
    		.Writeln "<TABLE id=status border=1 bgcolor=black>"
    		.Writeln "<tr style='height: 15px;'><td></td></tr></TABLE></td></tr></TABLE></body>"
    		.Writeln "</html>"	
    		.Close
    	End With
    	IE.Visible = True
    End Sub
    ' *****
     
    ' *****
    Sub StartIE(objDoc,strText,intPercent)
     
    If objDoc Is Nothing Then
    	If ((Cint(intPercent) >= 0) And (Cint(intPercent) <= 100)) Then
    	'Initialisation de CreatepopupIE
    	CreatepopupIE 
    	'Initialisation de CreateHTMLpopup
    	CreateHTMLpopup 
    	Else
    	Exit Sub
    	End If
    End If
    ' ***** Fermer la barre d'etat 
    If Not objDoc Is Nothing Then
    	If ((Cint(intPercent) < 0) Or (Cint(intPercent) > 100)) Then
    		IE.Visible = False	
    		IE.Quit
    		Set objDoc = Nothing
    		Set IE = Nothing
    		Exit Sub
    	End If
    End If
    Set objElement=objDoc.getelementbyid("etape")
    objElement.innerHTML=strText
    ' ***** Mettre a jour la barre d'etat 
    If Cint(intPercent) = 0 Then
    	objDoc.all.status.width = "1%"
    	objDoc.all.status.bgcolor = "black"
    	Else
    	objDoc.all.status.width = Cstr(Cint(intPercent)) & "%"
    	objDoc.all.status.bgcolor = "black"
    End If
    End Sub
    ' *****
    Lorsque l'on a notre fonction complète comme celle ci on vas pouvoir l'appeller via cette ligne:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    StartIE objDoc, "Démarrage du VBS", 0
    Pour fermer la notification il suffit de lui incrémenter une valeur exclu < 0 et > 100 (exemple -1):

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    StartIE objDoc, "Fin du VBS", -1
    Maintenant je vais bosser sur la mise en place automatique du pourcentage pour éviter de spécifier la valeur manuellement.
    (Rapport n° ligne du code / pourcentage)
    Un Script à 100 lignes de code, la ligne 1 = 0%, la ligne 1000 = 100%.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 7
    Dernier message: 04/07/2014, 15h55
  2. Appel d'un script SQL dans une procdure stockée
    Par doudou10000 dans le forum Oracle
    Réponses: 10
    Dernier message: 01/12/2004, 10h01
  3. mettre les termes d'un string dans une struct
    Par grand's dans le forum SL & STL
    Réponses: 17
    Dernier message: 29/11/2004, 17h43
  4. Integer ou string dans une DBGRID
    Par Yepazix dans le forum Bases de données
    Réponses: 4
    Dernier message: 02/08/2004, 13h42
  5. Réponses: 6
    Dernier message: 24/07/2003, 12h39

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