1

我一直遇到 FindFirstFile 和 FindNextFile 的问题,我需要让它们将所有 dll 列出到一个数组中,但我无法让它列出任何文件。我曾尝试使用和编辑 MSDN 中的示例代码,但这不起作用,要么他们将错误类型的变量传递给函数。如果它是一团糟,我现在拥有的代码很抱歉,但我正在尽一切努力让它工作。我也在使用argv[1],因为我相信这给出了.exe我需要的目录,因为那是 dll 将被存储。我对为什么我尝试的所有示例都不起作用以及为什么我不能修改它们以使其起作用感到完全困惑。

WIN32_FIND_DATA FindFileData;
HANDLE hFind = INVALID_HANDLE_VALUE;

string directorySearch = "E:\\My Documents\\Visual Studio 2010\\Projects\\SEP-Asignment-One\\Debug\\*";

// Find the first file in the directory.
hFind = FindFirstFile(LPCWSTR("E:\\My Documents\\Visual Studio 2010\\Projects\\SEP-Asignment-One\\Debug\\*"), &FindFileData);

if (hFind == INVALID_HANDLE_VALUE) 
{
  printf ("Invalid file handle. Error is %u.\n", GetLastError());
} 
else
{
  printf ("First file name is %s.\n", FindFileData.cFileName);

                    // List all the other files in the directory.
  while (FindNextFile(hFind, &FindFileData) != 0) 
  {
     printf ("Next file name is %s.\n", FindFileData.cFileName);
  }
  FindClose(hFind);

任何帮助都会受到欢迎。

4

2 回答 2

4

使用std::wstring, 宽字符串文字,如L"Hello", 并记住UNICODE在包含之前定义<windows.h>(但默认情况下在 Visual Studio 项目中完成)。

于 2012-11-25T10:41:46.903 回答
0

而不是 hFind = FindFirstFile(LPCWSTR("...")...,尝试 hFind = FindFirstFile(_T("...")

于 2012-11-25T10:43:49.030 回答