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

LoossSS Messages postés 12 Date d'inscription mardi 3 juin 2008 Statut Membre Dernière intervention 13 juin 2013 - 17 mai 2011 à 17:31
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

8 réponses

LoossSS Messages postés 12 Date d'inscription mardi 3 juin 2008 Statut Membre Dernière intervention 13 juin 2013
19 mai 2011 à 11:53
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
0
Utilisateur anonyme
27 mai 2011 à 13:40
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...
0
sebmafate Messages postés 4936 Date d'inscription lundi 17 février 2003 Statut Membre Dernière intervention 14 février 2014 37
27 mai 2011 à 13:56
@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
0
sebmafate Messages postés 4936 Date d'inscription lundi 17 février 2003 Statut Membre Dernière intervention 14 février 2014 37
27 mai 2011 à 13:58
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
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Utilisateur anonyme
27 mai 2011 à 15:58
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)
0
sebmafate Messages postés 4936 Date d'inscription lundi 17 février 2003 Statut Membre Dernière intervention 14 février 2014 37
27 mai 2011 à 16:29
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
0
sebmafate Messages postés 4936 Date d'inscription lundi 17 février 2003 Statut Membre Dernière intervention 14 février 2014 37
27 mai 2011 à 16:30
@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
0
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 !

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
0
Rejoignez-nous