Lancer une recherche dans un répertoire spécifique avec l'explorateur windows

Messages postés
12
Date d'inscription
mardi 3 juin 2008
Statut
Membre
Dernière intervention
13 juin 2013
- - Dernière réponse : LoossSS
Messages postés
12
Date d'inscription
mardi 3 juin 2008
Statut
Membre
Dernière intervention
13 juin 2013
- 13 juin 2013 à 11:07
Bonjour tout le monde

Je souhaiterai que lorsque l'utilisateur clique sur un bouton, l'explorateur windows se lance dans un répertoire spécifique (
System.Diagnostics.Process.Start(@"C:\")
marche très bien dans ce cas là).

Mon problème se trouve là : je souhaiterai de plus lancer automatiquement une recherche dans ce répertoire avec un string (par exemple "*.xls"). Est-ce possible ? (En résumé je souhaiterai faire un ctrl+f dans un répertoire...)

Si quelqu'un a une solution ce serait sympa, j'ai cherché un peu partout, je n'ai rien trouvé sur le sujet...

Bonne soirée
Afficher la suite 

8 réponses

Messages postés
12
Date d'inscription
mardi 3 juin 2008
Statut
Membre
Dernière intervention
13 juin 2013
0
Merci
Bien, j'ai "résolu" mon problème mais ma solution n'est vraiment pas propre... Dans tous les cas, ça me dépanne en attendant mieux :

Je lance l'explorateur dans le répertoire voulu avec :
System.Diagnostics.Process.Start(@"C:\\Répertoire Voulu")


Puis, je "simule" l'appui sur les touches ctrl-f, puis mon string recherché, puis la touche enter pour lancer la recherche :

SendKeys.SendWait("^f");  // ctrl-f pour ouvrir l'outil de recherche de l'explorateur windows
SendKeys.SendWait("ma string recherchée");
SendKeys.SendWait(("{ENTER}");  // La touche enter pour lancer la recherche


Etant presque sûr qu'une meilleure solution existe, si quelqu'un a une idée, je suis toujours preneur ;)

@ plus
Commenter la réponse de LoossSS
Messages postés
149
Date d'inscription
lundi 24 décembre 2007
Statut
Membre
Dernière intervention
16 juillet 2013
2
0
Merci
Bonjour,

Tu n'a pas besoin de

System.Diagnostics.Process.Start(@"C:\\Répertoire Voulu")

Il faut que tu listes les elements de ton dossier avec un "DirectoryInfo", puis tu cherche string recherchée dans le resultat.

ArrayList listFile = new ArrayList();

Foreach (FileInfo fichier In repertoire.GetFiles("*.*"))
listFile.Add(fichier.Name)
Next


Foreach (string file In listFile)
if (file.contains("ma string recherchée"){
ddlfile.Items.Add(file)
}
Next

Attention cet exemple est un code vb rapidement traduit en c#, ce n'est que pour te donner un exemple.

Il peut contenir des erreurs...

Ensuite il ne liste que les fichiers, il faut ensuite jouer avec les directoryInfo, et les filtres du getFile...

Comme preciser je ne te donne que le chemin, à toi d'ecrire le reste...
Commenter la réponse de alexandrevandenberghe
Messages postés
4936
Date d'inscription
lundi 17 février 2003
Statut
Modérateur
Dernière intervention
14 février 2014
32
0
Merci
@alexandrevandenberghe : si c'est si facile à traduire en C#, pourquoi ne t'écris-tu pas directement ?
C'est un forum C#, le VB.net n'a rien à faire ici !

var listFile = new List<FileInfo>(); 

listFile = (from f in Directory.GetFiles(@"C:\Mon Repertoire","*.xls", SearchOption.AllDirectories)
            select f).ToList();


En plus ton code est archi faux (même pour du VB !).

Sébastien FERRAND
Lead Developpeur
Microsoft Visual C# MVP 2004 - 2009
Blog Photo
Commenter la réponse de sebmafate
Messages postés
4936
Date d'inscription
lundi 17 février 2003
Statut
Modérateur
Dernière intervention
14 février 2014
32
0
Merci
autre solution :

var listFile = new List<FileInfo>(
   Directory.GetFiles(
      @"C:\Mon Repertoire",
      "*.xls", 
      SearchOption.AllDirectories));



Sébastien FERRAND
Lead Developpeur
Microsoft Visual C# MVP 2004 - 2009
Blog Photo
Commenter la réponse de sebmafate
Messages postés
149
Date d'inscription
lundi 24 décembre 2007
Statut
Membre
Dernière intervention
16 juillet 2013
2
0
Merci
Premierement mon code n'est pas archi faux, la conversion peut être, je code essentiellement en VB.net, donc je n'ai pas le droit d'aider des personnes qui codent en C#??? C'est limite là...

Je suis sur ce site pour donner des indications à des personnes qui demandent de l'aide, chose que j'ai fait ci dessus, mon aide n'est peut être pas exactement ce qu'il faut faire exactement mais cela pourrai l'aider...

D'ailleur en relisant la question originale, je me rend compte que cela n'est pas exactement ce qui est demandé, j'en suis désolé 'LoossSS'...

Et "sebmafate" au lieu de critiquer ce que j'ai fait, tu ferai mieux de relire les questions (ce que j'aurai du faire d'ailleur)
Commenter la réponse de alexandrevandenberghe
Messages postés
4936
Date d'inscription
lundi 17 février 2003
Statut
Modérateur
Dernière intervention
14 février 2014
32
0
Merci
D'une, j'ai lu la question.
De deux, j'ai apporté 2 versions C# à ta solution vb.net (qui je le répète n'est pas bonne).
La raison : imagine un répertoire avec 10.000 éléments, tu construis donc une ArrayList (.net 1.1 !!!) avec tous ces éléments... ensuite pour chaque élément tu le castes en string (si si, ArrayList ne contient que des Objects) et tu vérifies qu'il contient la string recherchée... que tu ajoutes à un DropDownList... Alors que la méthode GetFiles de DirectoryInfo te permet de filtrer ta recherche dès le début... bref.


Quant à ton aide, je le souligne à nouveau : c'est un forum C#, les réponses doivent être en C#, sinon, ça n'a aucun sens.
Je ne critique pas ton aide... je critique la façon dont tu t'y prends...

Enfin, à l'avenir vérifie à qui tu t'adresses, tout le monde n'aura pas ma patience.


Sébastien FERRAND
Ingénieur Concepteur Senior
Microsoft Visual C# MVP 2004 - 2009
Blog Photo
Commenter la réponse de sebmafate
Messages postés
4936
Date d'inscription
lundi 17 février 2003
Statut
Modérateur
Dernière intervention
14 février 2014
32
0
Merci
@LoossSS : malheureusement il n'existe pas de moyen plus "propre" de faire ce que tu as fait... aucune API n'est disponible pour cela.

Par contre, les 2 exemples que j'ai fourni au dessus permettent de récupérer la liste des fichiers au sein de ton application.


Sébastien FERRAND
Ingénieur Concepteur Senior
Microsoft Visual C# MVP 2004 - 2009
Blog Photo
Commenter la réponse de sebmafate
Messages postés
12
Date d'inscription
mardi 3 juin 2008
Statut
Membre
Dernière intervention
13 juin 2013
0
Merci
Bonjour !

Je reviens vers vous 2 ans après... car je suis retombé sur ce poste et je me rends compte que je ne vous ai pas remercié Je suis confus.

Merci pour l'aide que vous m'aviez apporté. Par contre, encore maintenant, je trouve étonnant qu'il n'existe pas d'API pour faire ça.

En effet, vous m'avez donné de bonnes méthodes pour lister les fichiers selon mes critères, mais à l'époque, je souhaitais vraiment ouvrir l'explorateur Windows et lancer une recherche... pas seulement lister les fichiers.

Bref, merci encore et à bientôt
Commenter la réponse de LoossSS