programme qui appel des scripts VBS
Bonjour,
Je débute en C# (et en dev en général) et je suis face à un phénomène vraiment étrange...
Je m'explique, j'ai commencé le dev en faisant des scripts VBS pour le boulot, comme je commence à en avoir un certain nombre à mon actif je me suis lancé dans le C#.
Du coup mon premier prog en C# est une interface qui centralise mes différents scripts.
Jusque là pas trop de difficultés tout fonctionne bien.
Aujourd'hui j'ai terminé un script sur lequel je bossais, j'ai donc voulu l'ajouter à mon application C# pour pouvoir l'appeler à partir de mon interface.
Le script vbs appelé (je précise qu'il marche nickel si je double click dessus) ouvre une fenêtre "parcourir" pour aller sélectionner un dossier, une fois le dossier sélectionner il va juste lister les fichiers contenue et me sors une liste.
Le problème c'est que lorsque je l'appel à partir de mon prog la fenêtre parcourir ne s'ouvre pas, je n'ai pas d'erreur, le script tourne sans fin...
A force de chercher j'ai trouvé un moyen de contournement mais je en comprends pas pourquoi ça fonctionne mieux comme ça... J'ai juste ajouté une msgBox au dessus de l'appel de cette fenêtre parcourir et là, quand je click sur le OK de la msgBox, miracle ma fenêtre parcourir s'ouvre et mon script va au bout du traitement sans problème...
je vous colle mon code ça sera plus parlant :
Comme ça ==> marche pas
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32
|
Dim nbLine, titre, dossier, liste
Set fso = CreateObject("Scripting.FileSystemObject" )
dossier = select_a_folder("Sélectionner un dossier a lister : ","")
titre = Replace(dossier, "\","")
titre = Replace(titre, ":","")
liste = "P:\listFiles_" & titre & ".txt"
Function select_a_folder(message,directory)
Const WINDOW_HANDLE = 0
Const NO_OPTIONS = 0
Set objShell = CreateObject("Shell.Application" )
Set objFolder = objShell.BrowseForFolder _
(WINDOW_HANDLE, message , NO_OPTIONS, directory)
On Error Resume Next
Set objFolderItem = objFolder.Self
If Err <> 0 Then
wscript.quit
Else
select_a_folder = objFolderItem.Path
end if
On Error GoTo 0
End Function
Set Folder = fso.Getfolder(dossier)
Set listFile = fso.OpenTextFile(liste,2 ,true)
nbLine = 0
For each file in Folder.Files
listFile.writeline File.name
nbLine = nbLine + 1
Next
listFile.close |
Comme ça ==> marche !!
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33
|
Dim nbLine, titre, dossier, liste
Set fso = CreateObject("Scripting.FileSystemObject" )
msgBox "Début du script"
dossier = select_a_folder("Sélectionner un dossier a lister : ","")
titre = Replace(dossier, "\","")
titre = Replace(titre, ":","")
liste = "P:\listFiles_" & titre & ".txt"
Function select_a_folder(message,directory)
Const WINDOW_HANDLE = 0
Const NO_OPTIONS = 0
Set objShell = CreateObject("Shell.Application" )
Set objFolder = objShell.BrowseForFolder _
(WINDOW_HANDLE, message , NO_OPTIONS, directory)
On Error Resume Next
Set objFolderItem = objFolder.Self
If Err <> 0 Then
wscript.quit
Else
select_a_folder = objFolderItem.Path
end if
On Error GoTo 0
End Function
Set Folder = fso.Getfolder(dossier)
Set listFile = fso.OpenTextFile(liste,2 ,true)
nbLine = 0
For each file in Folder.Files
listFile.writeline File.name
nbLine = nbLine + 1
Next
listFile.close |
Je sais qu'on est dans la section C# mais étant donné que le vbs fonctionne bien seul...
Si je me suis trompé de section je m'en excuse d'avance.
Merci d'avance pour votre aide