mirror of
https://github.com/chibicitiberiu/rainmeter-studio.git
synced 2024-02-24 04:33:31 +00:00
!SetWallpaper: Fixed that didn't work on Windows 7 with .png images.
This commit is contained in:
parent
c53f8a87cc
commit
3905a71af3
@ -1154,7 +1154,22 @@ void CSystem::SetClipboardText(const std::wstring& text)
|
||||
*/
|
||||
void CSystem::SetWallpaper(const std::wstring& wallpaper, const std::wstring& style)
|
||||
{
|
||||
auto setWallpaperStyle = [&]()
|
||||
if (!wallpaper.empty())
|
||||
{
|
||||
if (_waccess(wallpaper.c_str(), 0) == -1)
|
||||
{
|
||||
LogWithArgs(LOG_ERROR, L"!SetWallpaper: Unable to read file: %s", wallpaper.c_str());
|
||||
return;
|
||||
}
|
||||
|
||||
Bitmap* bitmap = Bitmap::FromFile(wallpaper.c_str());
|
||||
if (bitmap && bitmap->GetLastStatus() == Ok)
|
||||
{
|
||||
std::wstring file = Rainmeter->GetSettingsPath();
|
||||
file += L"Wallpaper.bmp";
|
||||
|
||||
const CLSID bmpClsid = { 0x557cf400, 0x1a04, 0x11d3, { 0x9a, 0x73, 0x0, 0x0, 0xf8, 0x1e, 0xf3, 0x2e } };
|
||||
if (bitmap->Save(file.c_str(), &bmpClsid) == Ok)
|
||||
{
|
||||
if (!style.empty())
|
||||
{
|
||||
@ -1203,39 +1218,11 @@ void CSystem::SetWallpaper(const std::wstring& wallpaper, const std::wstring& st
|
||||
RegCloseKey(hKey);
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
if (!wallpaper.empty())
|
||||
{
|
||||
if (_waccess(wallpaper.c_str(), 0) == -1)
|
||||
{
|
||||
LogWithArgs(LOG_ERROR, L"!SetWallpaper: Unable to read file: %s", wallpaper.c_str());
|
||||
return;
|
||||
}
|
||||
|
||||
if (GetOSPlatform() < OSPLATFORM_7)
|
||||
{
|
||||
// Gotta convert to .bmp for pre-7
|
||||
Bitmap* bitmap = Bitmap::FromFile(wallpaper.c_str());
|
||||
if (bitmap && bitmap->GetLastStatus() == Ok)
|
||||
{
|
||||
std::wstring file = Rainmeter->GetSettingsPath();
|
||||
file += L"Wallpaper.bmp";
|
||||
|
||||
const CLSID bmpClsid = { 0x557cf400, 0x1a04, 0x11d3, { 0x9a, 0x73, 0x0, 0x0, 0xf8, 0x1e, 0xf3, 0x2e } };
|
||||
if (bitmap->Save(file.c_str(), &bmpClsid) == Ok)
|
||||
{
|
||||
setWallpaperStyle();
|
||||
SystemParametersInfo(SPI_SETDESKWALLPAPER, 0, (void*)file.c_str(), SPIF_UPDATEINIFILE);
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
setWallpaperStyle();
|
||||
SystemParametersInfo(SPI_SETDESKWALLPAPER, 0, (void*)wallpaper.c_str(), SPIF_UPDATEINIFILE);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
|
Loading…
x
Reference in New Issue
Block a user