Question
[Résolu] SaveFile Dialog Remplacement fichier
- Arthur
- Auteur du sujet
- Hors Ligne
- Membre elite
-
Réduire
Plus d'informations
- Messages : 226
- Remerciements reçus 0
il y a 15 ans 9 mois #7146
par Arthur
[Résolu] SaveFile Dialog Remplacement fichier a été créé par Arthur
Bonjour,
Voilà j'ai écrit un programme qui récupère des logs et effectue divers traitements dessus pour ensuite l'afficher.
L'utilisateur peut choisir d'exporter le résultat en fichier csv avec un bouton qui ouvre une SaveFileDialog, et je me suis rendus compte que quand je choisi d'écraser un fichier existant juste après l'affichage de la fenêtre de confirmation le script plante. ( le script ne répond plus)
Voici le contenu de la fonction du bouton :
[code:1][void] [System.Reflection.Assembly]::LoadWithPartialName(\"System.Windows.Forms\"«»)
$fichier_csv = New-Object System.Windows.Forms.SaveFileDialog
$fichier_csv.InitialDirectory = \".\"
$fichier_csv.ShowHelp=$true
$fichier_csv.Filter = \"csv files | *.csv\"
if($fichier_csv.ShowDialog() -eq \"OK\"«») {
if($affichage -match \"\w+6\"«») {
$liste6 | Export-Csv -Path $fichier_csv.FIlename -Delimiter \";\" -Encoding Unicode
}
elseif($affichage -match \"\w+5\"«») {
$liste5 | Export-Csv -Path $fichier_csv.FIlename -Delimiter \";\" -Encoding Unicode
}
}
Write-Host \"Extraction finit! \"[/code:1]
Message édité par: bilbao, à: 14/06/10 17:24
Message édité par: bilbao, à: 14/06/10 17:25<br><br>Message édité par: Arnaud, à: 25/06/10 14:12
Voilà j'ai écrit un programme qui récupère des logs et effectue divers traitements dessus pour ensuite l'afficher.
L'utilisateur peut choisir d'exporter le résultat en fichier csv avec un bouton qui ouvre une SaveFileDialog, et je me suis rendus compte que quand je choisi d'écraser un fichier existant juste après l'affichage de la fenêtre de confirmation le script plante. ( le script ne répond plus)
Voici le contenu de la fonction du bouton :
[code:1][void] [System.Reflection.Assembly]::LoadWithPartialName(\"System.Windows.Forms\"«»)
$fichier_csv = New-Object System.Windows.Forms.SaveFileDialog
$fichier_csv.InitialDirectory = \".\"
$fichier_csv.ShowHelp=$true
$fichier_csv.Filter = \"csv files | *.csv\"
if($fichier_csv.ShowDialog() -eq \"OK\"«») {
if($affichage -match \"\w+6\"«») {
$liste6 | Export-Csv -Path $fichier_csv.FIlename -Delimiter \";\" -Encoding Unicode
}
elseif($affichage -match \"\w+5\"«») {
$liste5 | Export-Csv -Path $fichier_csv.FIlename -Delimiter \";\" -Encoding Unicode
}
}
Write-Host \"Extraction finit! \"[/code:1]
Message édité par: bilbao, à: 14/06/10 17:24
Message édité par: bilbao, à: 14/06/10 17:25<br><br>Message édité par: Arnaud, à: 25/06/10 14:12
Connexion ou Créer un compte pour participer à la conversation.
- Laurent Dardenne
- Hors Ligne
- Modérateur
-
Réduire
Plus d'informations
- Messages : 6311
- Remerciements reçus 68
il y a 15 ans 9 mois #7147
par Laurent Dardenne
Tutoriels PowerShell
Réponse de Laurent Dardenne sur le sujet Re:SaveFile Dialog Remplacement fichier
Je viens de tester (xp sp3, ps v2) je ne rencontre pas le pb.
Ajoute des traces pour savoir si le script reprend son exécution après avoir quitté la fenêtre.
Ajoute des traces pour savoir si le script reprend son exécution après avoir quitté la fenêtre.
Tutoriels PowerShell
Connexion ou Créer un compte pour participer à la conversation.
- Arthur
- Auteur du sujet
- Hors Ligne
- Membre elite
-
Réduire
Plus d'informations
- Messages : 226
- Remerciements reçus 0
il y a 15 ans 9 mois #7152
par Arthur
Réponse de Arthur sur le sujet Re:SaveFile Dialog Remplacement fichier
C'est dingue, ca marche effectivement sur ma VM XP SP3 mais pas sur ma VM Win7.
Le problème ne vient visiblement pas de mon code.
Car c'est au moment où il affiche la confirmation que le script plante je ne peut même pas cliquer sur \"Oui\".
EDIT : Visiblement l'originine du problème vient de là :
blog.sapien.com/index.php/2009/02/26/pri...-sp1-with-net-30-35/
Mais ca ne marche toujours pas.
[code:1]$Export_Log_Unique_OnClick=
{
[void] [System.Reflection.Assembly]::LoadWithPartialName(\"System.Windows.Forms\"«»)
$fichier_csv = New-Object System.Windows.Forms.SaveFileDialog
$fichier_csv.InitialDirectory = \".\"
$fichier_csv.ShowHelp=$true
$fichier_csv.OverwritePrompt =$true
$fichier_csv.CreatePrompt =$true
$fichier_csv.Filter = \"csv files | *.csv\"
if($fichier_csv.ShowDialog() -eq \"OK\"«») {
if($affichage -match \"\w+6\"«») {
$liste6 | Export-Csv -Path $fichier_csv.FIlename -Delimiter \";\" -Encoding Unicode
}
elseif($affichage -match \"\w+5\"«») {
$liste5 | Export-Csv -Path $fichier_csv.FIlename -Delimiter \";\" -Encoding Unicode
}
}
Write-Host \"Extraction finit!\"
}[/code:1]<br><br>Message édité par: bilbao, à: 15/06/10 09:09
Le problème ne vient visiblement pas de mon code.
Car c'est au moment où il affiche la confirmation que le script plante je ne peut même pas cliquer sur \"Oui\".
EDIT : Visiblement l'originine du problème vient de là :
blog.sapien.com/index.php/2009/02/26/pri...-sp1-with-net-30-35/
Mais ca ne marche toujours pas.
[code:1]$Export_Log_Unique_OnClick=
{
[void] [System.Reflection.Assembly]::LoadWithPartialName(\"System.Windows.Forms\"«»)
$fichier_csv = New-Object System.Windows.Forms.SaveFileDialog
$fichier_csv.InitialDirectory = \".\"
$fichier_csv.ShowHelp=$true
$fichier_csv.OverwritePrompt =$true
$fichier_csv.CreatePrompt =$true
$fichier_csv.Filter = \"csv files | *.csv\"
if($fichier_csv.ShowDialog() -eq \"OK\"«») {
if($affichage -match \"\w+6\"«») {
$liste6 | Export-Csv -Path $fichier_csv.FIlename -Delimiter \";\" -Encoding Unicode
}
elseif($affichage -match \"\w+5\"«») {
$liste5 | Export-Csv -Path $fichier_csv.FIlename -Delimiter \";\" -Encoding Unicode
}
}
Write-Host \"Extraction finit!\"
}[/code:1]<br><br>Message édité par: bilbao, à: 15/06/10 09:09
Connexion ou Créer un compte pour participer à la conversation.
- Laurent Dardenne
- Hors Ligne
- Modérateur
-
Réduire
Plus d'informations
- Messages : 6311
- Remerciements reçus 68
il y a 15 ans 9 mois #7153
par Laurent Dardenne
Tutoriels PowerShell
Réponse de Laurent Dardenne sur le sujet Re:SaveFile Dialog Remplacement fichier
bilbao écrit:
Sous Windows Seven, exécute PowerShell avec le switch -STA, cela devrait allez mieux.C'est dingue, ca marche effectivement sur ma VM XP SP3 mais pas sur ma VM Win7.
Le problème ne vient visiblement pas de mon code.
Tutoriels PowerShell
Connexion ou Créer un compte pour participer à la conversation.
- Arthur
- Auteur du sujet
- Hors Ligne
- Membre elite
-
Réduire
Plus d'informations
- Messages : 226
- Remerciements reçus 0
il y a 15 ans 9 mois #7154
par Arthur
Réponse de Arthur sur le sujet Re:SaveFile Dialog Remplacement fichier
En effet ca marche...mais bon...je suis obligé de faire ca tous le temps?C'est que l'outil n'est pas pour moi,ca serait bien de pouvoir trouver un moyen \"plus simple\" pour l'utilisateur. ( bien que c'est facile mais bon....
)
Visiblement il y a des solutions pour le faire :http://blogs.msdn.com/b/powershell/archive/2008/05/22/wpf-powershell-part-1-hello-world-welcome-to-the-week-of-wpf.aspx
Mais je n'aime pas trop l'utilisation de runspace ( j'utilise déjà des Job dans mon script )
Visiblement il y a des solutions pour le faire :http://blogs.msdn.com/b/powershell/archive/2008/05/22/wpf-powershell-part-1-hello-world-welcome-to-the-week-of-wpf.aspx
Mais je n'aime pas trop l'utilisation de runspace ( j'utilise déjà des Job dans mon script )
Connexion ou Créer un compte pour participer à la conversation.
- Laurent Dardenne
- Hors Ligne
- Modérateur
-
Réduire
Plus d'informations
- Messages : 6311
- Remerciements reçus 68
il y a 15 ans 9 mois #7155
par Laurent Dardenne
Tutoriels PowerShell
Réponse de Laurent Dardenne sur le sujet Re:SaveFile Dialog Remplacement fichier
bilbao écrit:
bilbao écrit:
$host.Runspace.ApartmentState n'est pas égale à STA, voir [System.Threading.ApartmentState]::MTA,STA,Unknown :
[code:1]
if($host.Runspace.ApartmentState -ne \"STA\"«»)
{
\"Relaunching\"
$file = $myInvocation.MyCommand.Path
powershell -NoProfile -Sta -File $file $parameter $parameter2
return
}
[/code:1]
On peut je pense pousser le bouchon en utilisant les variables $myInvocation et $PSBoundParameters pour reconstruire dynamiquement l'appel du script en cours...
Il propose aussi cette approche :
[code:1]
PowerShell -NoProfile -STA -Command {
Add-Type -Assembly PresentationCore
[Windows.Clipboard]::«»SetText(\"Hello World\"«»)
}
[/code:1]
On peut faire des choses compliquées avec PowerShell, mais lorsqu'on nous explique où trouver l'info c'est tout de suite plus facile de les faire simplement.
PowerShell ?! J'adore sa documentation
Là faut t'adresser à MS, je ne suis qu'un messager sur ce coup là.je suis obligé de faire ca tous le temps?
bilbao écrit:
J'ai dernièrement lu un script du prochaine ouvrage de Lee Holmes qui relance une instance de PS sica serait bien de pouvoir trouver un moyen \"plus simple\" pour l'utilisateur.
$host.Runspace.ApartmentState n'est pas égale à STA, voir [System.Threading.ApartmentState]::MTA,STA,Unknown :
[code:1]
if($host.Runspace.ApartmentState -ne \"STA\"«»)
{
\"Relaunching\"
$file = $myInvocation.MyCommand.Path
powershell -NoProfile -Sta -File $file $parameter $parameter2
return
}
[/code:1]
On peut je pense pousser le bouchon en utilisant les variables $myInvocation et $PSBoundParameters pour reconstruire dynamiquement l'appel du script en cours...
Il propose aussi cette approche :
[code:1]
PowerShell -NoProfile -STA -Command {
Add-Type -Assembly PresentationCore
[Windows.Clipboard]::«»SetText(\"Hello World\"«»)
}
[/code:1]
On peut faire des choses compliquées avec PowerShell, mais lorsqu'on nous explique où trouver l'info c'est tout de suite plus facile de les faire simplement.
PowerShell ?! J'adore sa documentation
Tutoriels PowerShell
Connexion ou Créer un compte pour participer à la conversation.
Temps de génération de la page : 0.051 secondes
- Vous êtes ici :
-
Accueil
-
forum
-
PowerShell
-
Entraide pour les débutants
- [Résolu] SaveFile Dialog Remplacement fichier