我正在使用函數SystemParametersInfo
來獲取桌面壁紙,並且假定在向該函數添加動作SPI_GETDESKWALLPAPER
時返回一個字符串。'SystemParametersInfo'函數在獲取桌面壁紙時返回不正確的值
LPWSTR bgPath;
if(!SystemParametersInfo(SPI_GETDESKWALLPAPER, 0, bgPath, SPIF_UPDATEINIFILE)){
qDebug() << *bgPath;
return;
}
qDebug()<< "an error occurred";
問題是函數返回一個數值(例如:50121)而不是字符串。
我的代碼有問題嗎?
它不明白你爲什麼會寫這樣的代碼。就好像你沒有閱讀文檔。它說以下內容:*檢索桌面壁紙的位圖文件的完整路徑。 pvParam參數必須指向緩衝區以接收以空字符結尾的路徑字符串。將uiParam參數設置爲pvParam緩衝區的大小(以字符爲單位)。返回的字符串不會超過MAX_PATH個字符。如果沒有桌面牆紙,則返回的字符串爲空。* –
因此,您得到的兩個參數都是錯誤的,而且文件Al參數也是錯誤的。除此之外,你不正確地處理返回值。 –
是的,你應該使用WCHAR [],以便它可以將文件的名稱寫入緩衝區。並傳遞數組的大小,使其不能寫得太多。並修復if()語句,您已經注意到它返回FALSE來指示失敗。並且使用GetLastError()來找出失敗的原因,發現爲什麼winapi函數調用不起作用總是很重要。 –