Question
Problème avec l'OpenFileDialog
- Beho
- Auteur du sujet
- Hors Ligne
- Nouveau membre
-
- Messages : 3
- Remerciements reçus 0
Je viens tout juste de me mettre au PowerShell et je trouve déjà des trucs vraiment louches, alors je viens voir par ici si vous avez des réponses à me donner.
Je suis sous Windows 7 Professionnel et quand j'utilise \"Windows PowerShell ISE\" avec ces 3 lignes :
[code:1][void][System.Reflection.assembly]::LoadWithPartialName(\"System.windows.forms\"«»)
$op = new-object system.windows.forms.openfiledialog
$op.showdialog()[/code:1]
ça ouvre bien un OpenFileDialog. Le programme attend que je ferme l'OpenFileDialog puis reprend son état normal.
Mais quand j'utilise à la place \"Windows PowerShell\" et que je mets les lignes l'une après l'autre, rien ne s'ouvre et la console reste en attente... en attente que je ferme l'OpenFileDialog qui ne s'est pas ouvert.
Si ça ce n'est pas louche.
Merci de m'aider à comprendre si quelqu'un visualise la cause du problème.
Connexion ou Créer un compte pour participer à la conversation.
- Laurent Dardenne
- Hors Ligne
- Modérateur
-
- Messages : 6311
- Remerciements reçus 68
je crois qu'il faut exécuter PS en mode -STA.
Tutoriels PowerShell
Connexion ou Créer un compte pour participer à la conversation.
- Beho
- Auteur du sujet
- Hors Ligne
- Nouveau membre
-
- Messages : 3
- Remerciements reçus 0
Alors, avec \"PowerShell ISE\" ça marche toujours, heureusement.
Et avec \"PowerShell\", je fais un clique droit sur powershell.exe -> Propriétés -> onglet Compatibilité, et je ne peux rien cocher, le contenu de l'onglet est non modifiable.
Alors je fais clique droit -> Exécuter en tant qu'administrateur .... et j'ai toujours le même problème, aucun OpenFileDialog ne s'ouvre.
Je précise que je me suis donné tous les droits au niveau de l'onglet Sécurité.
D'ailleurs ça m'intéresserait de savoir si vous réussissez à reproduire le même problème ou si ça vient uniquement de chez moi.
C'est un problème uniquement avec powershell.exe et uniquement (dans la mesure des tests que j'ai effectués) pour l'OpenFileDialog. Par exemple ça marche très bien si on utilise un Form au lieu d'un OpenFileDialog.
Merci.
Connexion ou Créer un compte pour participer à la conversation.
- Laurent Dardenne
- Hors Ligne
- Modérateur
-
- Messages : 6311
- Remerciements reçus 68
Effectivement, ça ne coule pas de source :Hum le mode -STA ?!? C'est le mode admin ? Sinon il va falloir me donner plus de détails.
[code:1]
PowerShell -?
#...
#-Sta
# Start the shell using a single-threaded apartment.
[/code:1]
J'ai d'autres infos si tu veux, mais c'est du dev système .
Beho Double écrit:
Il me semble que j'ai déjà eu le pb, voir ce post .D'ailleurs ça m'intéresserait de savoir si vous réussissez à reproduire le même problème ou
si ça vient uniquement de chez moi.
Teste avec le switch -STA et dis nous si cela résoud le pb.<br><br>Message édité par: Laurent Dardenne, à: 27/03/10 13:13
Tutoriels PowerShell
Connexion ou Créer un compte pour participer à la conversation.
- Beho
- Auteur du sujet
- Hors Ligne
- Nouveau membre
-
- Messages : 3
- Remerciements reçus 0
Le mode -STA permet visiblement de le résoudre :
J'ouvre la console Power Shell, je tape :
[code:1]powershell -sta[/code:1]
Et ensuite mes 3 lignes de codes. C'est alors qu'apparaît l'OpenFileDialog et je peux désormais le fermer et poursuivre ma vie.
Questions optionnelles :
- Ca voudrait dire que PS-ISE est en mode -sta par défaut ?
- Et est-ce que le comportement qu'on obtient quand on n'est pas en mode -sta est normal ou est-ce un bug ?
Enfin bon, on a de quoi contourner le problème maintenant, c'est le principal.
Voilà, merci.<br><br>Message édité par: Beho Double, à: 28/03/10 01:39
Connexion ou Créer un compte pour participer à la conversation.
- Laurent Dardenne
- Hors Ligne
- Modérateur
-
- Messages : 6311
- Remerciements reçus 68
Je le pense, il faudrait vérifier avec un debugger.Questions optionnelles :
- Ca voudrait dire que PS-ISE est en mode -sta par défaut ?
[edit] PS-Ise est une winform, on est donc dans le modéle STA.[/edit]
Beho Double écrit:
C'est normal, c'est plus la conception de PS qui pose soucis, celui-ci utilise par défaut le modéle de thread inverse (MultiMulti-threaded Apartment).Et est-ce que le comportement qu'on obtient quand on n'est pas en mode -sta est normal ou est-ce un bug ?
Lorsque l'on crée un projet Winform C# , le code source précise quel type de thread on utilise :
[code:1]
...
[STAThread]
static void Main()
{ ...
[/code:1]
Il restreind l'utilisation d'un objet à un seul thread, et les winform utilisent le mode STA, d'où le pb.
Beho Double écrit:
Là où un composant Winform ne pose pas de pb, bien que toutes les 2 soient des fenêtres...je rajoute que le problème est le même pour le System.Windows.Forms.SaveFileDialog
Pour une Winform le modéle de thread est peut être prise en charge par PS. Pour les autres, avec PowerShell v2 on peut soit la forcer avec -STA soit utiliser le cmdlet Invoke-Apartement ( PS v1 et v2).<br><br>Message édité par: Laurent Dardenne, à: 28/03/10 12:10
Tutoriels PowerShell
Connexion ou Créer un compte pour participer à la conversation.
- Vous êtes ici :
-
Accueil
-
forum
-
PowerShell
-
Entraide pour les débutants
- Problème avec l'OpenFileDialog