在注册表中的HKEY_USERS根键下 每个用户都有 .DEFAULT\Control Panel\Desktop键来控制桌面的配置。
其中的子键Wallpaper代表的是背景图的路径,而WallpaperStyle和TileWallpaper则分别代表的是现实的风格。在实例程序中通过修改参数可以得到以下三种风格。
EWPS_TILE,平铺
EWPS_CENTER,居中
EWPS_STRETCH, 拉伸
这些都只要一个函数就能解决啦。
Code
//风格类型枚举
enum EWALLPAPERSTYLE
{
EWPS_TILE,
EWPS_CENTER,
EWPS_STRETCH
};
//设置图片函数
bool SetWallpaper(LPCTSTR fileName,int iStyle)
{
HKEY regKeyRoot;
CFileFind ffind ;
//判断图片文件是否存在
CString filestr = fileName;
if(!ffind.FindFile(filestr))
{
return false;
}
//打开注册表 ".DEFAULT"为默认的桌面 如果是其他用户要用SID
if(ERROR_SUCCESS==RegOpenKey(HKEY_USERS,
".DEFAULT\\Control Panel\\Desktop",
®KeyRoot))
{
char datas[2];
datas[1]='\0';
switch (iStyle)
{
case EWPS_CENTER:
{
datas[0]='0';
RegSetValueEx(regKeyRoot,"WallpaperStyle",NULL,REG_SZ,(unsigned char*)datas,sizeof(datas));
RegSetValueEx(regKeyRoot,"TileWallpaper",NULL,REG_SZ,(unsigned char*)datas,sizeof(datas));
break;
}
case EWPS_STRETCH:
{
datas[0]='2';
RegSetValueEx(regKeyRoot,"WallpaperStyle",NULL,REG_SZ,(unsigned char*)datas,sizeof(datas));
datas[0]='0';
RegSetValueEx(regKeyRoot,"TileWallpaper",NULL,REG_SZ,(unsigned char*)datas,sizeof(datas));
break;
}
case EWPS_TILE:
{
datas[0]='0';
RegSetValueEx(regKeyRoot,"WallpaperStyle",NULL,REG_SZ,(unsigned char*)datas,sizeof(datas));
datas[0]='1';
RegSetValueEx(regKeyRoot,"TileWallpaper",NULL,REG_SZ,(unsigned char*)datas,sizeof(datas));
break;
}
default:
{
RegCloseKey(regKeyRoot);
return false;
}
}
RegSetValueEx(regKeyRoot,"Wallpaper",NULL,REG_SZ,(unsigned char*)filestr.GetBuffer(0),filestr.GetLength());
RegCloseKey(regKeyRoot);
}
return true;
}
//风格类型枚举
enum EWALLPAPERSTYLE
{
EWPS_TILE,
EWPS_CENTER,
EWPS_STRETCH
};
//设置图片函数
bool SetWallpaper(LPCTSTR fileName,int iStyle)
{
HKEY regKeyRoot;
CFileFind ffind ;
//判断图片文件是否存在
CString filestr = fileName;
if(!ffind.FindFile(filestr))
{
return false;
}
//打开注册表 ".DEFAULT"为默认的桌面 如果是其他用户要用SID
if(ERROR_SUCCESS==RegOpenKey(HKEY_USERS,
".DEFAULT\\Control Panel\\Desktop",
®KeyRoot))
{
char datas[2];
datas[1]='\0';
switch (iStyle)
{
case EWPS_CENTER:
{
datas[0]='0';
RegSetValueEx(regKeyRoot,"WallpaperStyle",NULL,REG_SZ,(unsigned char*)datas,sizeof(datas));
RegSetValueEx(regKeyRoot,"TileWallpaper",NULL,REG_SZ,(unsigned char*)datas,sizeof(datas));
break;
}
case EWPS_STRETCH:
{
datas[0]='2';
RegSetValueEx(regKeyRoot,"WallpaperStyle",NULL,REG_SZ,(unsigned char*)datas,sizeof(datas));
datas[0]='0';
RegSetValueEx(regKeyRoot,"TileWallpaper",NULL,REG_SZ,(unsigned char*)datas,sizeof(datas));
break;
}
case EWPS_TILE:
{
datas[0]='0';
RegSetValueEx(regKeyRoot,"WallpaperStyle",NULL,REG_SZ,(unsigned char*)datas,sizeof(datas));
datas[0]='1';
RegSetValueEx(regKeyRoot,"TileWallpaper",NULL,REG_SZ,(unsigned char*)datas,sizeof(datas));
break;
}
default:
{
RegCloseKey(regKeyRoot);
return false;
}
}
RegSetValueEx(regKeyRoot,"Wallpaper",NULL,REG_SZ,(unsigned char*)filestr.GetBuffer(0),filestr.GetLength());
RegCloseKey(regKeyRoot);
}
return true;
}
下面发一个DEMO程序 是VC6.0的