利用注册表修改桌面背景编程实例
来源:优易学  2011-11-9 14:33:38   【优易学:中国教育考试门户网】   资料下载   IT书店

  在注册表中的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",

  &regKeyRoot))

  {

  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;

  }

责任编辑:小草

文章搜索:
 相关文章
热点资讯
资讯快报
热门课程培训