Question Résolu - Utilisez le composant 'ouvrir fichier'

Plus d'informations
il y a 16 ans 6 mois #5256 par Lymnia
Bonjour,

Voilà aujourd'hui je fais un script qui doit mettre à jour une base de données à partir d'un fichier.

Et comme pour mes autres scripts, je commençais à écrire le chemin en dur lorsque je me suis dit: \"Cela ne sert à rien je connais pas le fichier...:pinch: \"

Je pourrais demander à l'utilisateur d'entrée le chemin avec un [code:1]$Chemin = Read-host \"Entrez le chemin\"[/code:1]

Mais je n'ose pas imaginer une faute de frappe...Surtout les miennes :whistle:

D'où ma requête.

Savez-vous si l'on peu utiliser : OpenFileDialog
msdn.microsoft.com/fr-fr/library/61097ykx(VS.80).aspx

Et si oui, pouvez-vous m'aiguillez ? Car j'ai bien vue qu'il ne suffisait pas de mettre :[code:1]$global:CheminEntree=openFileDialog1.get_FileName[/code:1]
:lol:

Merci<br><br>Message édité par: Lymnia, à: 3/09/09 15:46

Pour WMI, pensez à scriptomatic ça peut aider quand on connait pas la classe que l'on voudrait utiliser.

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

Plus d'informations
il y a 16 ans 6 mois #5257 par Lymnia
:whistle: Bon je me réponds à moi même...

Grâce à mon ami Google, j'ai pu trouvé celà :

[code:1][void][Reflection.Assembly]::LoadWithPartialName('System.Windows.Forms') $objForm = New-Object System.Windows.Forms.OpenFileDialog

$objForm.ShowDialog()[/code:1]

Et pour récupérer le nom du fichier ...........:whistle:

[code:1]$global:CheminEntree = $objForm.FileName [/code:1]

En fait c'était tout simple mais cela pourra vous servir.<br><br>Message édité par: Lymnia, à: 3/09/09 15:45

Pour WMI, pensez à scriptomatic ça peut aider quand on connait pas la classe que l'on voudrait utiliser.

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

Plus d'informations
il y a 16 ans 6 mois #5259 par Laurent Dardenne
Salut,
le site Scripting Guy a publié un article sur le sujet .
Le seul petit soucis est que la fenêtre n'est pas placée en avant-plan de la fenêtre de la console, et elle n'est pas accessible via la barre de tâche, comme peut l'être une winform :S

Tutoriels PowerShell

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

Plus d'informations
il y a 16 ans 6 mois #5261 par Lymnia
:whistle: Euh, je doit être très chanceux, ma console powershell passe bien en arrière plan.

Pour information je tourne sous windows XP.

Et j'utilise Powershell 1

Pour WMI, pensez à scriptomatic ça peut aider quand on connait pas la classe que l'on voudrait utiliser.

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

Plus d'informations
il y a 16 ans 6 mois #5262 par Laurent Dardenne
Lymnia écrit:

:whistle: Euh, je doit être très chanceux, ma console powershell passe bien en arrière plan.

J'ai effectivement pensé que cela était du au poste que j'utilise :angry:, je voyais mal les auteurs de l'article cité proposé une solution \&quot;bancale\&quot;.
J'ai testé sous un Windows 7 rc1, et je n'ai pas le soucis.
C'est donc un pb avec l'install d'XP sur mon poste, du coup j'ai trouvé une solution, via le site d'un MVP Japonais :
[code:1]
[void][Reflection.Assembly]::LoadWithPartialName('System.Windows.Forms')
$objForm = New-Object System.Windows.Forms.OpenFileDialog

#crée un objet référençant la fenêtre de la console, afin d'utiliser l'interface IWin32Window
# msdn.microsoft.com/fr-fr/library/system....32window(VS.85).aspx

$process = [Diagnostics.Process]::GetCurrentProcess()
#Auteur : Hiroshi Yoshioka
#MVP : mvp.support.microsoft.com/profile=94d147...13-9401-1b99a10d9538
#http://flamework.net/archives/11
$window = New-Object Windows.Forms.NativeWindow
$window.AssignHandle($process.MainWindowHandle)

#Utilise la surcharge ShowDialog(Window owner)
# owner = Handle to the window that owns the dialog.
$objform.ShowDialog($Window)
[/code:1]
Cela améliore un peu la situation, car lors de l'affichage de la fenêtre de dialogue sur mon poste:
- la console PS exécutant ce code perd le focus,
- du coup la fenêtre en arriére plan ( Z-Order ) se retrouve au premier plan.
Reste que si on se \&quot;repositionne\&quot; sur la console Ps, exécutant ce code, on se retrouve bien avec la fenêtre de dialogue en avant plan.
C'est toujours mieux que d'aller chercher la fenêtre du dialogue.

Sous Windows Seven rc1, PS v2, c'est plutot l'inverse.
Avec :
[code:1]
sleep 5;$objform.ShowDialog($Window)
#Sélectionnez une ou + autres appli
[/code:1]
- la console PS en arriére plan (Z-order 1 ou n) reprend le focus, la fenêtre de l'OpenFileDialog est en avant-plan.
Désolé pour cette infos erronée :S<br><br>Message édité par: Laurent Dardenne, à: 4/09/09 11:09

Tutoriels PowerShell

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

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