Question
WPF : exécuter un script à partir de la console
- Baylocq
- Auteur du sujet
- Hors Ligne
- Nouveau membre
Réduire
Plus d'informations
- Messages : 15
- Remerciements reçus 0
il y a 13 ans 1 mois #8989
par Baylocq
WPF : exécuter un script à partir de la console a été créé par Baylocq
Salut à tous,
Me revoila pour un petit souci que je n'arrive pas à régler. Je me suis lancé dans un script utilisant l'interface wpf en me basant sur le tuto du livre d'Arnaud et Robin.
Ma fenêtre est bien faite, tout fonctionne quand je lance le script depuis l'éditeur Windows Powershell ISE. Mais quand je le lance via la console, j'obtiens un erreur
Avez-vous un suggestion? Je ne pense pas que cela doit être compliqué, mais je ne suis pas une bête de la programmation et le thread ne me parle pas...
Merci bien!!
Message édité par: Fadaioli, à: 23/02/11 10:03<br><br>Message édité par: Arnaud, à: 23/02/11 22:18
Me revoila pour un petit souci que je n'arrive pas à régler. Je me suis lancé dans un script utilisant l'interface wpf en me basant sur le tuto du livre d'Arnaud et Robin.
Ma fenêtre est bien faite, tout fonctionne quand je lance le script depuis l'éditeur Windows Powershell ISE. Mais quand je le lance via la console, j'obtiens un erreur
Exception lors de l'appel de « Load » avec « 1 » argument(s) : « Impossible de créer une instance de « Window » définie
dans l'assembly « PresentationFramework, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35 ». Le thread appelant doit être en mode STA, comme l'exigent de nombreux composants de l'interface utilisateur. »
Avez-vous un suggestion? Je ne pense pas que cela doit être compliqué, mais je ne suis pas une bête de la programmation et le thread ne me parle pas...
Merci bien!!
Message édité par: Fadaioli, à: 23/02/11 10:03<br><br>Message édité par: Arnaud, à: 23/02/11 22:18
Connexion ou Créer un compte pour participer à la conversation.
- Baylocq
- Auteur du sujet
- Hors Ligne
- Nouveau membre
Réduire
Plus d'informations
- Messages : 15
- Remerciements reçus 0
- Arnaud Petitjean
- Hors Ligne
- Modérateur
il y a 13 ans 1 mois #8998
par Arnaud Petitjean
MVP PowerShell et créateur de ce magnifique forum
Auteur de 6 livres PowerShell aux éditions ENI
Fondateur de la société Start-Scripting
Besoin d'une formation PowerShell ?
Réponse de Arnaud Petitjean sur le sujet Re:WPF...
Salut !
Eh oui, il faut lire les messages d'erreur ! C'est ce que je m'évertue à dire à tous les PowerShelleurs débutants car ils sont extrêmement précis.
Donc, pour démarrer la console PowerShell en mode STA, le plus simple est de se créer un nouveau raccourci vers PowerShell.exe -sta.
A bientôt,
Arnaud
Eh oui, il faut lire les messages d'erreur ! C'est ce que je m'évertue à dire à tous les PowerShelleurs débutants car ils sont extrêmement précis.
Donc, pour démarrer la console PowerShell en mode STA, le plus simple est de se créer un nouveau raccourci vers PowerShell.exe -sta.
A bientôt,
Arnaud
MVP PowerShell et créateur de ce magnifique forum
Auteur de 6 livres PowerShell aux éditions ENI
Fondateur de la société Start-Scripting
Besoin d'une formation PowerShell ?
Connexion ou Créer un compte pour participer à la conversation.
- Richard Lazaro
- Hors Ligne
- Membre platinium
Réduire
Plus d'informations
- Messages : 530
- Remerciements reçus 0
il y a 13 ans 1 mois #9000
par Richard Lazaro
Think-MS : (Get-Life).Days | %{ Learn-More }
\\"Problems cannot be solved by the same level of thinking that created them.\\" - Albert Einstein
Réponse de Richard Lazaro sur le sujet Re:WPF...
Bonjour,
Je suis pas tout à fait du même avis que toi arnaud :]
Pour moi le plus simple est d'utiliser ce petit morceau de code à place en début de script powershell :
[code:1]
if($host.Runspace.ApartmentState -ne 'STA')
{
PowerShell -Sta -File ($myInvocation.MyCommand.Path)
return
}
[/code:1]
Ce script regarde si il est lancé en mode STA, si ce dernier n'y est pas alors il le relance avec.
Dès que j'aurais du temps, je voudrais améliorer ce script pour qui ajoute automatiquement les paramètres passés pour le relancement.
(oui, car comme tu l'as compris, si tu as des paramètres il te faudra compléter le bout de code avec le paramètre -Args correctement rempli)
Bien Cordialement,
Richard Lazaro.
Je suis pas tout à fait du même avis que toi arnaud :]
Pour moi le plus simple est d'utiliser ce petit morceau de code à place en début de script powershell :
[code:1]
if($host.Runspace.ApartmentState -ne 'STA')
{
PowerShell -Sta -File ($myInvocation.MyCommand.Path)
return
}
[/code:1]
Ce script regarde si il est lancé en mode STA, si ce dernier n'y est pas alors il le relance avec.
Dès que j'aurais du temps, je voudrais améliorer ce script pour qui ajoute automatiquement les paramètres passés pour le relancement.
(oui, car comme tu l'as compris, si tu as des paramètres il te faudra compléter le bout de code avec le paramètre -Args correctement rempli)
Bien Cordialement,
Richard Lazaro.
Think-MS : (Get-Life).Days | %{ Learn-More }
\\"Problems cannot be solved by the same level of thinking that created them.\\" - Albert Einstein
Connexion ou Créer un compte pour participer à la conversation.
- Arnaud Petitjean
- Hors Ligne
- Modérateur
il y a 13 ans 1 mois #9001
par Arnaud Petitjean
MVP PowerShell et créateur de ce magnifique forum
Auteur de 6 livres PowerShell aux éditions ENI
Fondateur de la société Start-Scripting
Besoin d'une formation PowerShell ?
Réponse de Arnaud Petitjean sur le sujet Re:WPF...
Pour ce qui concerne la simplicité, on va laisser les personnes concernées décider...
En tout cas pour ma part j'ai pas réussi (honte à moi) à faire marcher ton bout de code.
Tiens voilà un exemple de script WPF qui dessine un rectangle; peut-être peux tu nous montrer comment tu fais ?
[code:1]
# WPF_rectangle.ps1
[xml]$XAML = @'
<Window
xmlns=\"schemas.microsoft.com/winfx/2006/xaml/presentation\"
xmlns:«»x=\"schemas.microsoft.com/winfx/2006/xaml\"
Title=\"Window1\" Height=\"300\" Width=\"300\" >
<Grid>
<Rectangle Margin=\"64,90,62,97\" Name=\"rectangle1\" Stroke=\"Red\"
Fill=\"AntiqueWhite\" StrokeThickness=\"5\" RadiusX=\"20\" RadiusY=\"20\" />
</Grid>
</Window>
'@
$reader=New-Object System.Xml.XmlNodeReader $xaml
$Form=[Windows.Markup.XamlReader]::Load($reader)
$Form.ShowDialog() | Out-Null
[/code:1]<br><br>Message édité par: Arnaud, à: 24/02/11 00:07
En tout cas pour ma part j'ai pas réussi (honte à moi) à faire marcher ton bout de code.
Tiens voilà un exemple de script WPF qui dessine un rectangle; peut-être peux tu nous montrer comment tu fais ?
[code:1]
# WPF_rectangle.ps1
[xml]$XAML = @'
<Window
xmlns=\"schemas.microsoft.com/winfx/2006/xaml/presentation\"
xmlns:«»x=\"schemas.microsoft.com/winfx/2006/xaml\"
Title=\"Window1\" Height=\"300\" Width=\"300\" >
<Grid>
<Rectangle Margin=\"64,90,62,97\" Name=\"rectangle1\" Stroke=\"Red\"
Fill=\"AntiqueWhite\" StrokeThickness=\"5\" RadiusX=\"20\" RadiusY=\"20\" />
</Grid>
</Window>
'@
$reader=New-Object System.Xml.XmlNodeReader $xaml
$Form=[Windows.Markup.XamlReader]::Load($reader)
$Form.ShowDialog() | Out-Null
[/code:1]<br><br>Message édité par: Arnaud, à: 24/02/11 00:07
MVP PowerShell et créateur de ce magnifique forum
Auteur de 6 livres PowerShell aux éditions ENI
Fondateur de la société Start-Scripting
Besoin d'une formation PowerShell ?
Connexion ou Créer un compte pour participer à la conversation.
- Jacques Barathon
- Hors Ligne
- Administrateur
Réduire
Plus d'informations
- Messages : 576
- Remerciements reçus 0
il y a 13 ans 1 mois #9002
par Jacques Barathon
Réponse de Jacques Barathon sur le sujet Re:WPF...
Le bout de code de Richard marche bien chez moi. Curieux.
Quant à la simplicité d'une méthode ou de l'autre, c'est en effet à chacun de juger selon son besoin et ses contraintes.
Par contre, concernant le message d'erreur initial, je vous trouve durs avec fadaioli : il l'avait bien lu ce message, et il a d'ailleurs précisé qu'il ne comprenait pas cette histoire de thread. Et en effet, vous avouerez qu'il faut être un peu \"aware\" pour déduire de la formule \"le thread appelant doit être en mode STA\" qu'il faut relancer PowerShell avec le paramètre -sta.
Quant à la simplicité d'une méthode ou de l'autre, c'est en effet à chacun de juger selon son besoin et ses contraintes.
Par contre, concernant le message d'erreur initial, je vous trouve durs avec fadaioli : il l'avait bien lu ce message, et il a d'ailleurs précisé qu'il ne comprenait pas cette histoire de thread. Et en effet, vous avouerez qu'il faut être un peu \"aware\" pour déduire de la formule \"le thread appelant doit être en mode STA\" qu'il faut relancer PowerShell avec le paramètre -sta.
Connexion ou Créer un compte pour participer à la conversation.
Temps de génération de la page : 0.085 secondes
- Vous êtes ici :
- Accueil
- forum
- PowerShell
- Entraide pour les débutants
- WPF : exécuter un script à partir de la console