Question
Barre de progression
- Laurent Dardenne
- Hors Ligne
- Modérateur
-
- Messages : 6311
- Remerciements reçus 68
Pourtant d'après ton code d'origine, tu as un tableau de taille fixe.Dans ton exemple, ton maximum correspond au nombre de checkbox sur ta form,
mais moi mon maximum est différent a chaque requete =/ ce n'est pas possible de le faire en % ?
Et si je comprend bien certains checkbox seront cochés d'autres pas mais toutes sont déclarés et leur nombre ne change pas, c'est bien ça ?
Tutoriels PowerShell
Connexion ou Créer un compte pour participer à la conversation.
- Johan
- Auteur du sujet
- Hors Ligne
- Membre senior
-
- Messages : 57
- Remerciements reçus 0
Pourtant d'après ton code d'origine, tu as un tableau de taille fixe.
Et si je comprend bien certains checkbox seront cochés d'autres pas mais toutes sont déclarés et leur nombre ne change pas, c'est bien ça ?
c'est tout a fait ca
sinon je met mon code fonctionnel en annexe si jamais ...
au passage, y'a-t-il une autre methode pour désactivé le parefeu windows a distance a part netsh firewall et sc stop sharedaccess ?
interface 1 : g.imagehost.org/0094/Sans_titre_4.jpg
interface 2: g.imagehost.org/0950/Sans_titre2.jpg
La pièce jointe Application2.ps1 est absente ou indisponible
Pièces jointes :
Connexion ou Créer un compte pour participer à la conversation.
- Laurent Dardenne
- Hors Ligne
- Modérateur
-
- Messages : 6311
- Remerciements reçus 68
Le mieux est de créer un autre post.au passage, y'a-t-il une autre methode pour désactivé le parefeu windows a distance a part netsh firewall et sc stop sharedaccess ?
Je te joins une version adaptée, la barre de progression en placée dans le bas de la fenêtre. Et comme tu utilises d'autres checkbox dans la forme, autant continuer d'utiliser ton tableau.
Il y a un pb potentiel dans ton script :
[code:1]Exception calling \"FindAll\" with \"0\" argument(s): \"Le domaine spécifié n'existe pas ou n'a pas pu être contacté.[/code:1]
Enfin tu devrais découper ton script en plusieurs fonctions et/ou fichiers. En cas de modification de ton interface seul les appels de fonction seraient à modifier dans le script de création de forme qui est généré par un outil.
La pièce jointe Test_ProgressBarreV1.ps1 est absente ou indisponible
Tutoriels PowerShell
Pièces jointes :
Connexion ou Créer un compte pour participer à la conversation.
- Johan
- Auteur du sujet
- Hors Ligne
- Membre senior
-
- Messages : 57
- Remerciements reçus 0
[code:1]
$progressBar1.Name = 'progressBar1'
$System_Drawing_Size = New-Object System.Drawing.Size
$System_Drawing_Size.Height = 32
$System_Drawing_Size.Width = 569
$progressBar1.Size = $System_Drawing_Size
$progressBar1.TabIndex = 29
$System_Drawing_Point = New-Object System.Drawing.Point
$System_Drawing_Point.X = -1
$System_Drawing_Point.Y = 458
$progressBar1.Location = $System_Drawing_Point
$progressBar1.Dock =[System.Windows.Forms.DockStyle]::Bottom
$progressBar1.Maximum = 100
$progressBar1.Minimum = 0
$progressBar1.Value = 0
$form_generation.Controls.Add($progressBar1)
$button_Valider_OnClick=
{
$ProgressBar1.Value=0
Start-sleep 1
$objRecherche = new-object system.DirectoryServices.DirectorySearcher($objDomaine)
$objRecherche.Filter=\"(&(objectCategory=computer)(objectClass=computer))\"
$objResult = $objRecherche.FindAll()
$x = $objResult.count
$progressBar1.Step = (100/$x)
#Pour chaque PC/PO
foreach ($result in $objResult)
{
[System.Windows.Forms.MessageBox]::«»Show(\"OK\"«»)
$progressBar1.PerformStep()
Start-sleep -m 200
}
}
function OnFormClosing_Form_generation($Sender,$e){
($_).Cancel= $False
}
$Form_generation.Add_FormClosing( { OnFormClosing_Form_generation $Form_generation $EventArgs} )
$Form_generation.Add_Shown({$Form_generation.Activate()})
$Form_generation.ShowDialog()| Out-Null
[/code:1]
donc avec ca, pour chaque ligne de la requete ca incrémente ma barre comme il faut et me donne la progression exact.
le problème vient donc du fait que ma requête est trop \"grosse\" et que mon appli se fige
il faut donc que je \"redonne la main\" a l'interface pour incrementé la barre (comme avec les boite de dialogue dans l'exemple). Comment puis-je faire cela en \"automatique\" ?<br><br>Message édité par: VashQuiRit, à: 16/03/09 11:26
Connexion ou Créer un compte pour participer à la conversation.
- Laurent Dardenne
- Hors Ligne
- Modérateur
-
- Messages : 6311
- Remerciements reçus 68
En C# on peut appeller Application.DoEventsil faut donc que je \"redonne la main\" a l'interface pour incrementé la barre (comme avec les boite de dialogue dans l'exemple). Comment puis-je faire cela en \"automatique\" ?
Don sous PS soit
[code:1][System.Windows.Forms.Application]::«»DoEvents()[/code:1]
soit par un appel à refresh sur la form, mais je n'ai pas encore rencontré ce pb, donc à tester.
Tutoriels PowerShell
Connexion ou Créer un compte pour participer à la conversation.
- Johan
- Auteur du sujet
- Hors Ligne
- Membre senior
-
- Messages : 57
- Remerciements reçus 0
les deux solutions marchent et comme j'ai pas remarqué une grande différence de temps entre les deux j'ai opté pour l'application.doevents
merci pour l'aide Laurent
Connexion ou Créer un compte pour participer à la conversation.
- Vous êtes ici :
-
Accueil
-
forum
-
PowerShell
-
Entraide pour les débutants
- Barre de progression