Question
Exécuter du code lors d'une msgbox (popup) !
- neo673
- Auteur du sujet
- Hors Ligne
- Nouveau membre
-
Réduire
Plus d'informations
- Messages : 7
- Remerciements reçus 0
il y a 16 ans 4 mois #5513
par neo673
Exécuter du code lors d'une msgbox (popup) ! a été créé par neo673
Bonjour à tous ! 
J'aimerais afficher à l'écran une pop-up disant à l'utilisateur qu'une configuration est en cours. A ce moment, la messagebox reste affichée mais rend la main à la suite du code et arrête de s'afficher à la fin du code.
J'en suis la niveau code :
[code:1]$WshShell = New-Object -ComObject Wscript.Shell
$Answer = $WshShell.Popup(\"Paramètrage de Windows 7 en cours... \", 3, \"Windows 7 Tuning\",0)
{$WshShell.Run(\"%WINDIR%\regedit.exe /s \\xxxxxxxxxx.reg\"«»)}
{$WshShell.Run(\"%WINDIR%\regedit.exe /s \\xxxxxxxxxx.reg\"«»)}
{$WshShell.Run(\"%WINDIR%\regedit.exe /s \\xxxxxxxxxx.reg\"«»)}
{$WshShell.Run(\"%WINDIR%\regedit.exe /s \\xxxxxxxxxx.reg\"«»)}
{$WshShell.Run(\"%WINDIR%\regedit.exe /s \\xxxxxxxxxx.reg\"«»)}
{$WshShell.Run(\"%WINDIR%\regedit.exe /s \\xxxxxxxxxx.reg\"«»)}
[/code:1]
Alors la ce qu'il fait c'est qu'il affiche la pop-up 3 secondes sans rien faire et après il exécute mes fichiers de registre
Ne serait-ce pas possible d'éxecuter la msgbox sans qu'elle s'enlève et de passer à la suite du code et la supprimer ensuite ?
Merci pour votre précieuse aide !
Message édité par: neo673, à: 22/10/09 16:39<br><br>Message édité par: neo673, à: 22/10/09 16:40
J'aimerais afficher à l'écran une pop-up disant à l'utilisateur qu'une configuration est en cours. A ce moment, la messagebox reste affichée mais rend la main à la suite du code et arrête de s'afficher à la fin du code.
J'en suis la niveau code :
[code:1]$WshShell = New-Object -ComObject Wscript.Shell
$Answer = $WshShell.Popup(\"Paramètrage de Windows 7 en cours... \", 3, \"Windows 7 Tuning\",0)
{$WshShell.Run(\"%WINDIR%\regedit.exe /s \\xxxxxxxxxx.reg\"«»)}
{$WshShell.Run(\"%WINDIR%\regedit.exe /s \\xxxxxxxxxx.reg\"«»)}
{$WshShell.Run(\"%WINDIR%\regedit.exe /s \\xxxxxxxxxx.reg\"«»)}
{$WshShell.Run(\"%WINDIR%\regedit.exe /s \\xxxxxxxxxx.reg\"«»)}
{$WshShell.Run(\"%WINDIR%\regedit.exe /s \\xxxxxxxxxx.reg\"«»)}
{$WshShell.Run(\"%WINDIR%\regedit.exe /s \\xxxxxxxxxx.reg\"«»)}
[/code:1]
Alors la ce qu'il fait c'est qu'il affiche la pop-up 3 secondes sans rien faire et après il exécute mes fichiers de registre
Ne serait-ce pas possible d'éxecuter la msgbox sans qu'elle s'enlève et de passer à la suite du code et la supprimer ensuite ?
Merci pour votre précieuse aide !
Message édité par: neo673, à: 22/10/09 16:39<br><br>Message édité par: neo673, à: 22/10/09 16:40
Connexion ou Créer un compte pour participer à la conversation.
- Laurent Dardenne
- Hors Ligne
- Modérateur
-
Réduire
Plus d'informations
- Messages : 6311
- Remerciements reçus 68
il y a 16 ans 4 mois #5515
par Laurent Dardenne
Tutoriels PowerShell
Réponse de Laurent Dardenne sur le sujet Re:Exécuter du code lors d'une msgbox (popup) !
Salut
neo673 écrit:
neo673 écrit:
neo673 écrit:
[code:1]
################################################################################
#
# Nom : Form1.ps1
# Version : 0.1
# Auteur :
# Date : le 22/10/2009
#
# Généré sous PowerShell V1.0.0.0
# Appel : &\"$($AddLib.Scripts)\Convert-Form\Convert-Form.ps1\" Form1.Designer.cs
@\"
Historique :
(Soit substitution CVS)
$Log$
(soit substitution SVN)
$LastChangedDate$
$Rev$
\"@>$Null
#
################################################################################
# Chargement des assemblies externes
[void][Reflection.Assembly]::LoadWithPartialName(\"System.Windows.Forms\"«»)
[void][Reflection.Assembly]::LoadWithPartialName(\"System.Drawing\"«»)
$lbMessage = new-object System.Windows.Forms.Label
#
# lbMessage
#
$lbMessage.AutoSize = $true
$lbMessage.Font = new-object System.Drawing.Font(\"Microsoft Sans Serif\", 15.25,[System.Drawing.FontStyle]::Bold,[System.Drawing.GraphicsUnit]::«»Point, 0)
$lbMessage.Location = new-object System.Drawing.Point(55, 32)
$lbMessage.Name = \"lbMessage\"
$lbMessage.Size = new-object System.Drawing.Size(132, 25)
$lbMessage.TabIndex = 0
$lbMessage.Text = \"Patientez...\"
#
$FrmMain = new-object System.Windows.Forms.form
#
$FrmMain.ClientSize = new-object System.Drawing.Size(292, 127)
$FrmMain.Controls.Add($lbMessage)
$FrmMain.Name = \"FrmMain\"
$FrmMain.StartPosition =[System.Windows.Forms.FormStartPosition]::CenterScreen
$FrmMain.Text = \"Traitement en cours\"
$FrmMain.TopMost = $true
function OnFormClosing_FrmMain{
# $this est égal au paramètre sender (object)
# $_ est égal au paramètre e (eventarg)
# Déterminer la raison de la fermeture :
# if (($_).CloseReason -eq [System.Windows.Forms.CloseReason]::UserClosing)
#Autorise la fermeture
($_).Cancel= $False
}
$FrmMain.Add_FormClosing( { OnFormClosing_FrmMain} )
$sbTraitement={
$FrmMain.Refresh()
1..10|Foreach {Write-Host \"Traitement $_\";Sleep 10}
# regedit.exe /s \\xxxxxxxxxx.reg
# ou
# &$env:WINDIR\regedit.exe /s \\xxxxxxxxxx.reg
$FrmMain.Close()
}
$FrmMain.Add_Shown({$FrmMain.Activate();&$sbTraitement})
#Active la fenêtre et exécute le traitement
$ModalResult=$FrmMain.ShowDialog()
#Libération de la Form
$FrmMain.Dispose()
[/code:1]
Reste que si l'utilisateur clique sur une autre fenêtre et reviens sur la console, le résultat n'est pas très convainquant.
Ensuite tu peux exécuter le programme regedit directement sous la console PowerShell.
neo673 écrit:
L'objet que tu utilises fait ce que tu lui demandes.Alors la ce qu'il fait c'est qu'il affiche la pop-up 3 secondes sans rien faire et après il exécute mes fichiers de registre
neo673 écrit:
Tu dois adopter une autre approche, car ici l'objet que tu utilises n'est pas appropié.Ne serait-ce pas possible d'éxecuter la msgbox sans qu'elle s'enlève et de passer à la suite du code et la supprimer ensuite ?
neo673 écrit:
Le mieux est d'utiliser une Winform, une possible solution :J'aimerais afficher à l'écran une pop-up disant à l'utilisateur qu'une configuration est en cours. A ce moment, la messagebox reste affichée mais rend la main à la suite du code et arrête de s'afficher à la fin du code.
[code:1]
################################################################################
#
# Nom : Form1.ps1
# Version : 0.1
# Auteur :
# Date : le 22/10/2009
#
# Généré sous PowerShell V1.0.0.0
# Appel : &\"$($AddLib.Scripts)\Convert-Form\Convert-Form.ps1\" Form1.Designer.cs
@\"
Historique :
(Soit substitution CVS)
$Log$
(soit substitution SVN)
$LastChangedDate$
$Rev$
\"@>$Null
#
################################################################################
# Chargement des assemblies externes
[void][Reflection.Assembly]::LoadWithPartialName(\"System.Windows.Forms\"«»)
[void][Reflection.Assembly]::LoadWithPartialName(\"System.Drawing\"«»)
$lbMessage = new-object System.Windows.Forms.Label
#
# lbMessage
#
$lbMessage.AutoSize = $true
$lbMessage.Font = new-object System.Drawing.Font(\"Microsoft Sans Serif\", 15.25,[System.Drawing.FontStyle]::Bold,[System.Drawing.GraphicsUnit]::«»Point, 0)
$lbMessage.Location = new-object System.Drawing.Point(55, 32)
$lbMessage.Name = \"lbMessage\"
$lbMessage.Size = new-object System.Drawing.Size(132, 25)
$lbMessage.TabIndex = 0
$lbMessage.Text = \"Patientez...\"
#
$FrmMain = new-object System.Windows.Forms.form
#
$FrmMain.ClientSize = new-object System.Drawing.Size(292, 127)
$FrmMain.Controls.Add($lbMessage)
$FrmMain.Name = \"FrmMain\"
$FrmMain.StartPosition =[System.Windows.Forms.FormStartPosition]::CenterScreen
$FrmMain.Text = \"Traitement en cours\"
$FrmMain.TopMost = $true
function OnFormClosing_FrmMain{
# $this est égal au paramètre sender (object)
# $_ est égal au paramètre e (eventarg)
# Déterminer la raison de la fermeture :
# if (($_).CloseReason -eq [System.Windows.Forms.CloseReason]::UserClosing)
#Autorise la fermeture
($_).Cancel= $False
}
$FrmMain.Add_FormClosing( { OnFormClosing_FrmMain} )
$sbTraitement={
$FrmMain.Refresh()
1..10|Foreach {Write-Host \"Traitement $_\";Sleep 10}
# regedit.exe /s \\xxxxxxxxxx.reg
# ou
# &$env:WINDIR\regedit.exe /s \\xxxxxxxxxx.reg
$FrmMain.Close()
}
$FrmMain.Add_Shown({$FrmMain.Activate();&$sbTraitement})
#Active la fenêtre et exécute le traitement
$ModalResult=$FrmMain.ShowDialog()
#Libération de la Form
$FrmMain.Dispose()
[/code:1]
Reste que si l'utilisateur clique sur une autre fenêtre et reviens sur la console, le résultat n'est pas très convainquant.
Ensuite tu peux exécuter le programme regedit directement sous la console PowerShell.
Tutoriels PowerShell
Connexion ou Créer un compte pour participer à la conversation.
- neo673
- Auteur du sujet
- Hors Ligne
- Nouveau membre
-
Réduire
Plus d'informations
- Messages : 7
- Remerciements reçus 0
il y a 16 ans 4 mois #5570
par neo673
Réponse de neo673 sur le sujet Re:Exécuter du code lors d'une msgbox (popup) !
Waouw 
La ce n'est plus du scripting de débutant
Etant donné que je n'ai que quelques valeurs de registre à modifier, tant pis je laisserai juste une pop-up de quelques secondes afin d'avertir l'utilisateur et mes valeurs registre seront modifiés ensuite.
Je te remercie vivement en tout cas pour le temps passé pour réaliser ce script !
La ce n'est plus du scripting de débutant
Etant donné que je n'ai que quelques valeurs de registre à modifier, tant pis je laisserai juste une pop-up de quelques secondes afin d'avertir l'utilisateur et mes valeurs registre seront modifiés ensuite.
Je te remercie vivement en tout cas pour le temps passé pour réaliser ce script !
Connexion ou Créer un compte pour participer à la conversation.
Temps de génération de la page : 0.044 secondes
- Vous êtes ici :
-
Accueil
-
forum
-
PowerShell
-
Entraide pour les débutants
- Exécuter du code lors d'une msgbox (popup) !