XP上 用VC代码设置主题风格有关问题
XP下 用VC代码设置主题风格问题
我想实现用代码更改XP主题, 修改注册表后重启/注销电脑,主题可以更改,
现在我要的效果是不用重启就可以直接更改, 那些重启资源管理器的方法都没用, 发消息也不好使(也许是我方法有误)
应该是要使用 SystemParametersInfo API 只是我不知道参数该怎么带
哪位大大知道的 麻烦来讨论下 在线等...
------解决方案--------------------
以前研究过,StyleXP,WindowBlinds,XP变脸王之类的
一直没找到接口
记得是用重启Themes服务实现的
有实力的话,可以起逆向一下上述软件
或者调试一下“桌面右键属性 - 显示 属性”那个控制面板
------解决方案--------------------
http://topic.****.net/u/20110105/11/4352146f-3f3a-40ee-91d6-76eb53d3da0a.html?25016
------解决方案--------------------
- C/C++ code
HKEY hkey = NULL; char *pSubkey = "Software\\Microsoft\\Windows\\CurrentVersion\\ThemeManager"; char *pValueName = "DllName"; char *pKeyValue = "%SystemRoot%\\Resources\\Theme\\白色法拉利\\白色法拉利.msstyles"; //char *pKeyValue = "%SystemRoot%\\Resources\\Themes\\我们的浪漫\\cursor\\AppStarting.ani"; //char *pSubkey = "Control Panel\\Cursors"; //char *pValueName = "AppStarting"; int nIndex = strlen(pKeyValue) + 1; BYTE szValue[MAX_PATH] = {0}; memcpy(szValue, pKeyValue, nIndex); ::RegOpenKeyEx(HKEY_CURRENT_USER, pSubkey, 0, KEY_WRITE, &hkey); if (hkey) { ::RegSetValueEx(hkey, pValueName, NULL, REG_EXPAND_SZ, szValue, nIndex); } ::RegCloseKey(hkey); SystemParametersInfo(SPI_SETCURSORS, 0, NULL, SPIF_SENDCHANGE); }
我想实现用代码更改XP主题, 修改注册表后重启/注销电脑,主题可以更改,
现在我要的效果是不用重启就可以直接更改, 那些重启资源管理器的方法都没用, 发消息也不好使(也许是我方法有误)
应该是要使用 SystemParametersInfo API 只是我不知道参数该怎么带
哪位大大知道的 麻烦来讨论下 在线等...
------解决方案--------------------
以前研究过,StyleXP,WindowBlinds,XP变脸王之类的
一直没找到接口
记得是用重启Themes服务实现的
有实力的话,可以起逆向一下上述软件
或者调试一下“桌面右键属性 - 显示 属性”那个控制面板
------解决方案--------------------
http://topic.****.net/u/20110105/11/4352146f-3f3a-40ee-91d6-76eb53d3da0a.html?25016
------解决方案--------------------
- C/C++ code
typedef int (__stdcall *SetSystemVisualStyle)(LPCWSTR, LPCWSTR, LPCWSTR, int); HMODULE hmUxtheme = LoadLibrary("uxtheme.dll"); if(hmUxtheme) { SetSystemVisualStyle SetSystemVisualStylePtr = (SetSystemVisualStyle)GetProcAddress(hmUxtheme, MAKEINTRESOURCE(65)); if(SetSystemVisualStylePtr) SetSystemVisualStylePtr(L"C:\\WINDOWS\\Resources\\Themes\\Luna\\luna.msstyles", L"NormalColor", L"NormalSize", 33); //FreeLibrary(hmUxtheme); }