2016-04-18 127 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(); 
    ... 
相關問題