要获取桌面上的图标,可以使用Windows API中的Shell API。以下是遍历桌面上所有文件的示例代码:
cpp
#include <Windows.h>
#include <ShlObj.h>
#include <iostream>
#include <vector>
using namespace std;
int main()
{
// 获取桌面文件夹的路径
wchar_t desktopPath[MAX_PATH];
if (FAILED(SHGetFolderPathW(NULL, CSIDL_DESKTOPDIRECTORY, NULL, 0, desktopPath)))
{
cout << "Failed to get desktop folder path." << endl;
return 1;
}
// 获取桌面上的图标
vector<wstring> icons;
WIN32_FIND_DATAW findData;
HANDLE hFind = FindFirstFileW((wstring(desktopPath) + L"\\*").c_str(), &findData);
if (hFind != INVALID_HANDLE_VALUE)
{
do
{
if (findData.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY)
continue;
wstring iconPath = wstring(desktopPath) + L"\\" + findData.cFileName;
icons.push_back(iconPath);
} while (FindNextFileW(hFind, &findData));
FindClose(hFind);
}
// 输出桌面图标路径
for (const auto& icon : icons)
{
wcout << icon << endl;
}
return 0;
}
在这个示例中,通过调用`SHGetFolderPathW`函数来获取桌面文件夹的路径。然后使用`FindFirstFileW`和`FindNextFileW`遍历桌面上的所有文件和文件夹。我们只对文件感兴趣,所以在循环中排除了文件夹。最后,我们将每个图标的路径存储在一个向量中,并将其输出到控制台。
请注意,此示例代码需要链接Shell32.lib库。