0

以下を使用して、マクロ DB_CONFIG_FILE_PATH_1 として定義されたファイルを検索しています。

wchar_t filename[100];
SearchPath( L".\\", DB_CONFIG_FILE_PATH_1, NULL, 100, filename, NULL);

ファイルが C:\ ディレクトリにある場合は、検出されます。ただし、ファイルがそのサブディレクトリのいずれかにある場合、関数はそれを見つけられません。

上記の機能を使用して、サブディレクトリを含むすべてのドライブでファイルを検索する方法を説明できる人もいます。

関数がファイルへのハンドルを返しても、ファイルへのパスを取得できないため、FindFirstFile関数を使用していません。

つまり、ファイルのフルパス名が欲しい。ファイルの名前は知っていますが、コンプのどこにあるのかわかりません。

4

2 に答える 2

1

Win32 のネイティブ コードでサブディレクトリを検索するには、FindFirstFile を使用してからサブディレクトリを再帰的に検索する必要があります。

FindFirstFile の戻り値はファイル ハンドルではありません。ファイル情報は、返された WIN32_FIND_DATA 構造体に含まれています。このハンドルは、FindNextFile の呼び出しで検索を続行するために使用されます。検索中に完全なパス名を取得するには、現在のディレクトリを追跡し、検出されたディレクトリ名をパスに追加する必要があります。

SearchPath は、PATH 環境変数または存在する場合は最初のパラメーターのみを検索し、サブディレクトリは検索しません。

于 2009-07-02T23:56:50.020 に答える
0

GetCurrentDirectory()パスを教えてください:

http://msdn.microsoft.com/en-us/library/aa364934(VS.85).aspx

および の 2 番目の引数FindFirstFile():

http://msdn.microsoft.com/en-us/library/aa364418(VS.85).aspx

これはWIN32_FIND_DATA構造体であり、ファイルの名前を教えてくれるはずです:

http://msdn.microsoft.com/en-us/library/aa365740(VS.85).aspx

于 2009-07-02T23:59:10.080 に答える