Question Probleme System.Windows.Forms.OpenFileDialog

Plus d'informations
il y a 13 ans 2 mois #13868 par sebastien
Bonjour,

Je suis confronté à un comportement différent d'un même script en fonction de ce que l'on utilise pour le lancer.

Depuis PowerGui script editor ou Powershell ISE tout fonctionne bien. En revanche, depuis une console ou en faisant 'run with powershell' (qui lance une console aussi), la partie du script faisant appel à System.Windows.Forms.OpenFileDialog 'freeze' la fenêtre graphique déjà ouverte et n'ouvre jamais la fenêtre attendue.

Voici le code qui semble t'il pose problème :

La fonction devant renvoyer le fichier sélectionné.
[code:1][void][System.Reflection.Assembly]::LoadWithPartialName(\"System.Windows.Forms\"«»)
Function Get_FileName($initialDirectory){
$OpenFileDialog = New-Object System.Windows.Forms.OpenFileDialog
$OpenFileDialog.initialDirectory = $initialDirectory
$OpenFileDialog.filter = \"All files (*.*)| *.*\"
$OpenFileDialog.ShowDialog() | Out-Null
return (get-item $OpenFileDialog.filename)}[/code:1]

Le bouton qui appelle cette fonction.
[code:1] $BUTTON_select_file = create_button \"Select input file\" 15 41 110 30
$BUTTON_select_file.Add_Click({ $input_file = Get_FileName \"c:\temp\"
If ($input_file.Exists)
{
$LABEL_selected_file.Text = $input_file.FullName
$BUTTON_submit.Enabled = $true
}
}) [/code:1]

Je met en bonus la fonction que j'utilise pour créer les boutons, au cas ou celle-ci serait en cause.

[code:1]function create_button ([string]$text,[int]$location_x,[int]$location_y,[int]$size_x,[int]$size_y,$action) {
$Button = New-Object System.Windows.Forms.Button
$Button.Location = New-Object System.Drawing.Size($location_x,$location_y)
$Button.Size = New-Object System.Drawing.Size($size_x,$size_y)
$Button.Text = $text
$Form.Controls.Add($Button)
return $Button}[/code:1]

Merci à ceux qui prendront 5 minutes pour lire tout ça :)

@+



EDIT : Peut etre un début de solution, en continuant a farfouiller google, j'ai trouvé ceci :
[code:1]$OpenFileDialog.ShowHelp = $true[/code:1]
Cela permet à la fenêtre d'apparaitre, mais pour une raison inconnue, ce n'est plus un objet IO qui est renvoyé mais un array ex : {OK, C:\temp\repa\clamp.dat}<br><br>Message édité par: sebasti1, à: 4/02/13 14:27

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

Plus d'informations
il y a 13 ans 2 mois #13869 par sebastien
bon, je m'auto répond même si je ne comprend pas le comportement du code. :pinch:

[code:1] $BUTTON_select_file = create_button \&quot;Select input file\&quot; 15 41 110 30
$BUTTON_select_file.Add_Click({ $input_file = Get_FileName \&quot;c:\temp\&quot;
If ($input_file[1].Exists)
{
$input_file = get-item $input_file[1]
$LABEL_selected_file.Text = $input_file.FullName
$BUTTON_submit.Enabled = $true
}
})[/code:1]

et

[code:1]Function Get_FileName($initialDirectory){
$OpenFileDialog = New-Object System.Windows.Forms.OpenFileDialog
$OpenFileDialog.ShowHelp = $true
$OpenFileDialog.initialDirectory = $initialDirectory
$OpenFileDialog.filter = \&quot;All files (*.*)| *.*\&quot;
$OpenFileDialog.ShowDialog()
return (get-item $OpenFileDialog.filename)}[/code:1]

J'ai du poster un peu vite, désolé ...

@+<br><br>Message édité par: sebasti1, à: 4/02/13 14:43

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

Plus d'informations
il y a 2 semaines 2 jours #38854 par MAttew18
G’day, I was trying to find a fun way to spend a quiet evening online without overthinking things. I discovered spinogambino and tried their Diamond Slots. I lost a few small rounds at first, but then one lucky spin triggered a significant bonus. The tension and thrill of each round kept me entertained for hours. I also liked how intuitive the interface was, which made it easy to get absorbed in the games. It’s now my favorite way to unwind after a busy week.

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

Plus d'informations
il y a 6 jours 8 heures #39518 par kurki
Hello everyone! Heavy rain in Vancouver totally ruined my weekend hike. I stayed indoors and looked for a digital casino offering CAD rewards. My casual spins on digital roulette resulted in terrible losses. I gave duospin a proper chance by switching to a live baccarat stream. Doubling my wager resulted in a flawless hand and a massive profit. Highly recommended

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

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