2009-02-04 9 views
0

Je pense avoir vu une fois qu'il était possible d'utiliser la fonctionnalité de recherche de fenêtres dans le code. Qu'il était possible de rechercher des fichiers à l'aide d'une requête sql (quelque chose comme "select filename from filestore où directory = 'c: \ somedir' et l'extension dans ('.doc', '.txt', '.me') et datemodified > = '2009-01-01 00:00:00' "Windows API moyen de rechercher dans les sous-dossiers avec des caractères génériques et d'autres critères en C++?

Quoi qu'il en soit, même s'il n'y a pas moyen de le faire avec une requête, existe-t-il des fonctionnalités dans l'API Windows OU un code simple pour faire exactement ce genre de chose?

il semble une chose évidente pour qu'il n'y ait pas un moyen facile de le faire.

J'ai une fonction qui trouve tous les fichiers dans un répertoire (avec subdirs), mais il est essentiellement Il ne peut pas effectuer de recherche avec des caractères génériques et il ne peut pas effectuer de recherche avec d'autres critères, tels que la date la plus récente. n une date donnée.

Si possible, je ne souhaite pas télécharger de bibliothèques partagées tierces pour cela. J'utilise C++ Builder dans Vista, et s'il y a des fonctionnalités de Vista uniquement, alors c'est ok.

Répondre

2

En fait, vous pouvez utiliser FindFirstFileEx() pour implémenter vos critères de recherche. Malheureusement, la plupart du temps vous devez l'implémenter vous-même .. Ce n'est pas trop dur ..

Fondamentalement, vous pouvez vérifier la structure WIN32_FIND_DATA pour les critères que vous souhaitez rechercher. Par exemple, si vous souhaitez rechercher uniquement les fichiers dont la date de création est supérieure à une certaine date, vérifiez si le membre de structure WIN32_FIND_DATA ftCreationTime ou ftLastWriteTime, selon vos besoins.

0

Vous pouvez utiliser FindFirstFileEx() pour effectuer une recherche avec des caractères génériques et des attributs.

+0

Parfait. Je vais essayer quand je rentre à la maison (à mon code) – MrVimes

+0

OK, je l'ai essayé. Semble qu'il ne peut pas être utilisé pour rechercher des caractères génériques ou d'autres critères de recherche. Ce n'est pas mieux que 'findfirst' ou 'findfirstfile'. Les paramètres pour la spécification des critères disent "réservé pour un usage futur" et doivent être nuls. la fonction dnt wrk nyw gn sk nw q. n mr spc fr cmt. – MrVimes

+0

Oui, il peut être utilisé pour rechercher avec des caractères génériques. Vous devez faire quelque chose de mal si cela ne fonctionne pas. – Stefan

-1

Le code C a été affiché des milliers de fois sur Google Groupes depuis les années 90 (news: //comp.os.ms-windows.programmer.win32 et autres)