Я пытаюсь изменить обои для рабочего стола. Это работает просто отлично, когда я использую это так:
SystemParametersInfo(SPI_SETDESKWALLPAPER, 0, "C:\\1.jpg", SPIF_SENDCHANGE);
Но когда я использую это так, обои рабочего стола устанавливаются полностью черными:
std::string s = "C:\\1.jpg";
SystemParametersInfo(SPI_SETDESKWALLPAPER, 0, &s, SPIF_SENDCHANGE);
Я пытался получить больше информации с помощью GetLastError()
, но возвращаемое значение равно 0. Я также пытался использовать .png-файлы, но это ничего не меняет.
Есть идеи, что я делаю не так?
Попробуй это:
SystemParametersInfo(SPI_SETDESKWALLPAPER, 0, (void*)s.c_str(), SPIF_SENDCHANGE);
SystemParametersInfo
функция не принимает std::string
указатель в виде пути, он принимает массив символов с нулевым символом в конце. Что есть то, что c_str()
метод std::string
обеспечивает.
Других решений пока нет …