Тут вопрос по темам на мобилку задали, отвечаю на коммоне, может кому то ещё потребуется. Вот посмотрите, небольшое приложение меняющее обои на Home Screen.
#include "stdafx.h"
#include <windows.h>
int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance,
LPTSTR lpCmdLine, int nCmdShow)
{
static const TCHAR pszImagePath[] = TEXT("\\Application Data\\Home\\guava.jpg");
HKEY hKey = NULL;
RegOpenKeyEx(HKEY_CURRENT_USER, TEXT("ControlPanel\\Home"), 0, 0, &hKey);
RegSetValueEx(hKey, TEXT("BgImage"), 0, REG_SZ, (BYTE *)pszImagePath, (_tcslen(pszImagePath)+1)*sizeof(TCHAR));
RegCloseKey(hKey);
SendMessage(HWND_BROADCAST, WM_SETTINGCHANGE , 0xF2, 0);
return 0;
}
Необходимо помнить, что:
*.home.xml задает расположение и тип элементов на HomeScreen, а также цветовую схему и фоновый рисунок
*.scheme.xml - применяется поверх *.home.xml и задает цветовую схему и фоновый рисунок фоновый рисунок можно задать вручную (или программно как в приведенном выше примере) и тогда эта настройка наложится поверх *.home.xml и *.scheme.xml
Можете попробовать задать scheme.xml для своего изображения, к примеру:
<colorscheme>
<title lang="0x0409">PI2 Yellow</title>
<background bgimage="pi2_desktop_yellow.bmp" valign="bottom" />
<scheme>
<color name="COLOR_WINDOW" value="#FFFFFF" />
<color name="COLOR_WINDOWTEXT" value="#000000" />
<color name="COLOR_STATICTEXT" value="#000000" />
<color name="COLOR_MENUTEXT" value="#000000" />
<color name="COLOR_HIGHLIGHT" value="#AF6D00" />
<color name="COLOR_HIGHLIGHTTEXT" value="#ffffff" />
<color name="COLOR_TRAYGRADLEFT" value="#BE7B0D" />
<color name="COLOR_TRAYGRADRIGHT" value="#D49328" />
<color name="COLOR_TRAYTEXT" value="#FFFFFF" />
<color name="COLOR_BTNFACE" value="#c0c0c0" />
<color name="COLOR_BTNTEXT" value="#000000" />
<color name="COLOR_SCROLLBAR" value="#AF6D00" />
<color name="COLOR_HOMEHIGHLIGHT" value="#B06D00" />
<color name="COLOR_HOMETEXT" value="#000000" />
</scheme>
</colorscheme>
Примерно так.