Как поменять обои windows 10 с C ++? - PullRequest
2 голосов
/ 11 июня 2019

Я хочу изменить фоновые обои рабочего стола Windows в C ++ с помощью Windows API.

Я прочитал следующие сообщения на эту тему:

Проблема:

Когда я выполняю код, фон рабочего стола становится полностью черным, как в посте выше (да, я попробовал предлагаемое исправление в этом посте. Не повезло.)

Код:

#include <windows.h>

int main() {
    std::string s = "C:\\picture.jpg";
    SystemParametersInfo(SPI_SETDESKWALLPAPER, 0, (PVOID*)s.c_str(), SPIF_SENDCHANGE);
    return 0;
}

Я также попробовал просто (void*) вместо (PVOID*) выше и L перед строкой.Пока ничего не работает.

решено:

Изменение SystemParametersInfo на SystemParametersInfoA (как предложено в комментарии и ответе) сработало.

1 Ответ

2 голосов
/ 11 июня 2019

Я считаю, что вы должны использовать wchar_t в качестве ввода для SystemParametersInfo() вместо строки, а также использовать SystemParametersInfoW().

Следующий код работал для меня:

#include <windows.h>
#include <iostream>


int main() {
    const wchar_t *path = L"C:\\image.png";
    int result;
    result = SystemParametersInfoW(SPI_SETDESKWALLPAPER, 0, (void *)path, SPIF_UPDATEINIFILE);
    std::cout << result;        
    return 0;
}

Где результат должен вернуть true, если ему удастся изменить фон.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...