Question Problème avec l'OpenFileDialog

Plus d'informations
il y a 15 ans 11 mois #6440 par Beho
Bonjour Bonsoir,

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.:blink:

Merci de m'aider à comprendre si quelqu'un visualise la cause du problème.

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

Plus d'informations
il y a 15 ans 11 mois #6441 par Laurent Dardenne
Salut,
je crois qu'il faut exécuter PS en mode -STA.

Tutoriels PowerShell

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

Plus d'informations
il y a 15 ans 11 mois #6443 par Beho
Réponse de Beho sur le sujet Re:Problème avec l'OpenFileDialog
Hum le mode -STA ?!? C'est le mode admin ? Sinon il va falloir me donner plus de détails.:cheer:

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.

Plus d'informations
il y a 15 ans 11 mois #6445 par Laurent Dardenne
Beho Double écrit:

Hum le mode -STA ?!? C'est le mode admin ? Sinon il va falloir me donner plus de détails.:cheer:

Effectivement, ça ne coule pas de source :
[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:

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.

Il me semble que j'ai déjà eu le pb, voir ce post .
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.

Plus d'informations
il y a 15 ans 11 mois #6446 par Beho
Réponse de Beho sur le sujet Re:Problème avec l'OpenFileDialog
Bon, je rajoute que le problème est le même pour le System.Windows.Forms.SaveFileDialog, on dirait que ça touche les DialogBox qui n'apparaissent pas dans la barre des tâches.

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.

Plus d'informations
il y a 15 ans 11 mois #6447 par Laurent Dardenne
Beho Double écrit:

Questions optionnelles : :)
- Ca voudrait dire que PS-ISE est en mode -sta par défaut ?

Je le pense, il faudrait vérifier avec un debugger.
[edit] PS-Ise est une winform, on est donc dans le modéle STA.[/edit]
Beho Double écrit:

Et est-ce que le comportement qu'on obtient quand on n'est pas en mode -sta est normal ou est-ce un bug ?

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).
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:

je rajoute que le problème est le même pour le System.Windows.Forms.SaveFileDialog

Là où un composant Winform ne pose pas de pb, bien que toutes les 2 soient des fenêtres...
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.

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