Как изменить фон рабочего стола с помощью VC

#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 не влияет на программу, это для отладки файла.