Question
Probleme System.Windows.Forms.OpenFileDialog
- sebastien
- Auteur du sujet
- Hors Ligne
- Membre junior
-
Réduire
Plus d'informations
- Messages : 32
- Remerciements reçus 0
il y a 13 ans 2 mois #13868
par sebastien
Probleme System.Windows.Forms.OpenFileDialog a été créé 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
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.
- sebastien
- Auteur du sujet
- Hors Ligne
- Membre junior
-
Réduire
Plus d'informations
- Messages : 32
- Remerciements reçus 0
il y a 13 ans 2 mois #13869
par sebastien
Réponse de sebastien sur le sujet Re:Probleme System.Windows.Forms.OpenFileDialog
bon, je m'auto répond même si je ne comprend pas le comportement du code. 
[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[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 = \"All files (*.*)| *.*\"
$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
[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[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 = \"All files (*.*)| *.*\"
$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.
- MAttew18
- Hors Ligne
- Membre senior
-
Réduire
Plus d'informations
- Messages : 62
- Remerciements reçus 0
il y a 2 semaines 2 jours #38854
par MAttew18
Réponse de MAttew18 sur le sujet Probleme System.Windows.Forms.OpenFileDialog
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.
- kurki
- Hors Ligne
- Nouveau membre
-
Réduire
Plus d'informations
- Messages : 9
- Remerciements reçus 0
il y a 6 jours 8 heures #39518
par kurki
Réponse de kurki sur le sujet Probleme System.Windows.Forms.OpenFileDialog
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
- Vous êtes ici :
-
Accueil
-
forum
-
PowerShell
-
Entraide pour les débutants
- Probleme System.Windows.Forms.OpenFileDialog