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
Comme ça ==> marche !!
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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
Je sais qu'on est dans la section C# mais étant donné que le vbs fonctionne bien seul...
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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
Si je me suis trompé de section je m'en excuse d'avance.
Merci d'avance pour votre aide
Partager