2016-04-18 104 views
1

我有一个程序将用户的壁纸设置为文件。我需要得到的图像文件C++获取目录中文件的完整路径

的完整路径这里是我的代码

#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; 
} 
+0

这里有谁知道你在哪里存储文件到你的机器上?你为什么不直接在那里写下自己的路? –

+1

哪里存储在您的系统中的图像文件? –

+0

如果图像位于程序的当前工作目录中,则可以使用'GetCurrentDirectory'获取该目录的绝对路径。 – Steadybox

回答

4

假设有问题的文件在您当前的工作目录中,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); 
} 
3

如果使用Viual工作室2015年,您可以使用新的filesystem库这一点。

#include <filesystem> 
using filesystem = std::experimental::filesystem::v1; 
    ... 
    const wchar_t *filename = filesystem::canonical(L"hay.jpg").c_str(); 
    ... 
相关问题