Windows-Funktion SearchPath
-
21-08-2019 - |
Frage
Ich verwende die folgenden für eine Datei als Makro definiert DB_CONFIG_FILE_PATH_1 zu suchen.
wchar_t filename[100];
SearchPath( L".\\", DB_CONFIG_FILE_PATH_1, NULL, 100, filename, NULL);
Wenn die Datei in C: \ Verzeichnis, es gefunden wird. Aber, wenn die Datei in einem seiner Unterverzeichnisse ist die Funktion, die sie nicht finden.
Kann einige erklären, wie für eine Datei mit der obigen Funktion alle Laufwerke einschließlich Unterverzeichnisse suchen.
Ich bin nicht mit Findfirstfile-Funktion, weil ich nicht in der Lage bin den Pfad zur Datei, obwohl die Funktion zurück in die Datei behandeln abzurufen.
Um es möchte ich vollständigen Pfadnamen einer Datei. Ich kenne den Namen der Datei, aber nicht wissen, wo es auf der comp ist.
Lösung
Für Unterverzeichnisse in nativen Code auf Win32 suchen, müssen Sie es selbst tun, mit Findfirstfile und dann rekursiv in Unterverzeichnisse.
Der Rückgabewert von Findfirstfile ist keine Datei-Handle - die Dateiinformationen enthalten ist, in der WIN32_FIND_DATA Struktur zurückgegeben. Der Griff ist in Anrufen verwendet, um Findnextfile um die Suche fortzusetzen. Um einen vollständigen Pfadnamen bei der Suche zu erhalten, müssen Sie den Überblick behalten, welche Verzeichnis Sie sich gerade befinden, und fügen Sie die erkannten Verzeichnisnamen auf den Pfad.
SearchPath sucht nur in der Umgebungsvariable PATH oder dem ersten Parameter, falls vorhanden und Verzeichnisse nicht suchen.
Andere Tipps
GetCurrentDirectory()
sollte sagen Sie den Pfad:
http://msdn.microsoft.com/ en-us / library / aa364934 (VS.85) aspx
und das zweite Argument von FindFirstFile()
:
http://msdn.microsoft.com/ en-us / library / aa364418 (VS.85) aspx
, die eine WIN32_FIND_DATA
Struktur sollten Sie den Namen der Datei, sagen:
http://msdn.microsoft.com/ en-us / library / aa365740 (VS.85) aspx