我有一个程序可以将用户的壁纸设置为一个文件。我需要获取图像文件的完整路径
这是我的代码
#include <windows.h>
int main()
{
FreeConsole();
const wchar_t *filenm = L"hay.jpg"; //Get path to hay.jpg
bool isWallSet = SystemParametersInfoW(SPI_SETDESKWALLPAPER, 0,
(void*)filenm, SPIF_UPDATEINIFILE);
return 0;
}
Run Code Online (Sandbox Code Playgroud)
假设有问题的文件在您当前的工作目录中,GetFullPathName听起来是个好主意。它需要一个文件名,并通过在当前工作目录前面加上一个完整的路径。
请仔细注意文档中的警告:您不能在多线程程序中安全地使用此 API,因为当前工作目录被保存为进程范围的全局变量,该变量不是线程安全的。
还要注意,无论文件是否存在于工作目录中,API 都会返回一个路径;它只需要你给它的文件名并在当前工作目录之前。
#include <windows.h>
int main()
{
char filename[] = "test.txt";
char fullFilename[MAX_PATH];
GetFullPathName(filename, MAX_PATH, fullFilename, nullptr);
MessageBox(NULL, fullFilename, "DEBUG", MB_OK);
}
Run Code Online (Sandbox Code Playgroud)
如果您使用 Viual Studio 2015,您可以为此使用新的文件系统库。
#include <filesystem>
using filesystem = std::experimental::filesystem::v1;
...
const wchar_t *filename = filesystem::canonical(L"hay.jpg").c_str();
...
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
12183 次 |
| 最近记录: |