#c #desktop #wallpaper
#c #Для рабочего стола #Обои
Вопрос:
В настоящее время я пытаюсь изменить фон рабочего стола с помощью SystemParametersInfo () vs не выдает мне никаких ошибок при вводе моих данных, но когда я запускаю программу, я получаю это предупреждение с желтым треугольником, и в нем говорится, что было какое-то исключение, вызванное KernelBase.dll и затем он говорит, что какой-то PDB не имеетзагружено. Я сделал это давным-давно и смог заставить его работать, но я больше не помню, как кто-нибудь может мне помочь? вот что я написал
SystemParametersInfo(SPI_SETDESKWALLPAPER, 0, "C:/Windows/Downloaded Program Files/Flowers.jpg", SPIF_UPDATEINIFILE);
кто-нибудь знает, почему это происходит и как это исправить? Любая помощь приветствуется, спасибо
Комментарии:
1. Фактическое содержимое ошибки, а не просто ее описание, было бы более полезным. Вызов в его нынешнем виде выглядит нормально. Вы делаете что-нибудь еще, кроме изменения фона? Работает ли программа под другим пользователем или с другими разрешениями? Вы уверены, что ошибка действительно возникает из-за этого
SystemParametersInfo()
вызова?
Ответ №1:
Вам нужно добавить L
путь к файлу. L"C:/Windows/Downloaded Program Files/Flowers.jpg"
.
#include "stdafx.h"
#include <windows.h>
int main() {
int return_value = SystemParametersInfo(SPI_SETDESKWALLPAPER, 0, L"d:/flower1.jpg", SPIF_UPDATEINIFILE);
return 0;
}
Комментарии:
1. Любое объяснение того, почему
L
следует использовать?2. L делает его широкой строкой (
const wchar_t[]
) вместо строки ASCII (const char[]
)
Ответ №2:
Лучшее описание ошибки определенно помогло бы больше. Однако для начала вам следует заменить все косые черты на двойные черные косые черты «\».
SystemParametersInfo(SPI_SETDESKWALLPAPER, 0, «C:\Windows\Downloaded Программа Files\Flowers.jpg «, SPIF_UPDATEINIFILE);
Это выглядит правильно, однако невозможно сказать, какова фактическая причина ошибки, без дополнительной информации. Также файл PDB не влияет на программу, это для отладки файла.