Question Windows.Form

Plus d'informations
il y a 17 ans 2 mois #3723 par michault
Windows.Form a été créé par michault
Bonjour,

j'ai un petit soucis. J'essaye de créer ma première fenêtre pour afficher la liste des services sur un PC.

Je ne sais pas comment lier ma commande get-wmiObject à ma variable $liste.

Quelqu'un peu-t-il me donner un petit coup de pouce?:blush:
Merci

PS: la mise en page est pas finalisée mais ça c'est du dessin.


[code:1]#ShowServicesForms.ps1
# Paramètres: $who : Quels PC exemple PCOPR12
# $service : service
Param($who,$service)

#Création des composants
$bouton_quitter = New-object System.Windows.Forms.Button
$bouton_quitter.Location = New-Object System.Drawing.Point(444, 270)
$bouton_quitter.Size = New-Object System.Drawing.Size(99, 36)
$bouton_quitter.Text = 'Quitter'

$liste = New-Object System.Windows.Forms.ListView
$liste.Location = New-Object System.Drawing.Point(10, 87)
$liste.Size = New-Object System.Drawing.Size(310, 219)

$label = New-Object System.Windows.Forms.Label
$label.Font = New-object System.Drawing.Font('Calibri', 18, [System.Drawing.FontStyle]::Bold, [System.Drawing.GraphicsUnit]::«»Point,0)
$label.Location = New-Object System.Drawing.Point(10, 21)
$label.Size = New-Object System.Drawing.Size(360, 80)
$label.Text = 'Listes des services ' + $service + ' sur ' + $who

Get-WmiObject -Class Win32_Service -ComputerName $who | where {$_.Displayname -like \"$service\"}

$form = new-object windows.forms.form
$form.size = new-object system.drawing.size(580,360)
#$form.icon ='C:\WDSC\samples\vidcust\rt_win32\HORROR.ICO'
$form.text ='SERVICES'
$form.Controls.add($liste)
$form.Controls.add($label)
$form.Controls.add($bouton_quitter)


$bouton_quitter.add_Click({
$form.close()
})

$form.showdialog()[/code:1]

Connexion ou Créer un compte pour participer à la conversation.

Plus d'informations
il y a 17 ans 2 mois #3728 par Laurent Dardenne
Réponse de Laurent Dardenne sur le sujet Re:Windows.Form
Salut,
tu peux construire un tableau de string dans la méthode load de la Form :
[code:1]
...
$bouton_quitter.add_Click({
$form.close()
})
# Au démarrage de la form
$Form.Add_Load({
[String[]]$private:«»ServicesName=Get-WmiObject -Class Win32_Service -ComputerName $who | where {$_.Displayname -like \"$service\"}|% {$_.Displayname}
$Liste.Items.Addrange($private:«»ServicesName)
})

$form.showdialog()

$form.Dispose()
[/code:1]

Le composant Listview ne supporte pas le databinding qui simplifie l'association entre un composant et les données qu'il doit afficher, tu peux dans ce cas utiliser une grille possédant une seule colonne :
voir : msdn.microsoft.com/fr-fr/library/fbk67b6z(VS.80).aspx

L'inconvénient ici est que tu dois rechercher les services puis créer un tableau de string pour l'affichage et enfin rechercher à nouveau le service sur lequel tu souhaites intervenir.
Ici cela peut convenir mais dans d'autres cas ce ne sera suffisant. Tu peux aussi placer le tableau en portée script.
Et ne pas oublier de supprimer les ressources par un appel à Dispose().

Tutoriels PowerShell

Connexion ou Créer un compte pour participer à la conversation.

Temps de génération de la page : 0.076 secondes
Propulsé par Kunena