用C#设置桌面墙纸

原创 2006年05月20日 03:24:00

网上有很多用其它语言来设置桌面壁纸的方法,但是我没有找到用C#语言来写的,由于自己需要在项目中做这样一个功能,所以通过察看其它语言写的资料来自己用C#写了一个这样的程序。

主要是同过WINDOWS API函数来设置壁纸,然后还要通过写注册表来设置壁纸的显示方式(中心、平铺、拉伸)

注意事项:首先,如果要设置壁纸后立即出现中心、平铺或拉伸的效果,就要先设置壁纸的显示方式,再设置壁纸;其次,为了在桌面属性里看到壁纸,并且避免重启后壁纸消失。那么就应该把位图(设置壁纸需要是位图格式)保存到一个目录,然后把壁纸路径设为这个路径。

HKEY_USERS/.DEFAULT/Control Panel/DeskTop中,

         TileWallpaper              WallpaperStyle
居中:         0                           0
平铺:         1                           0
拉伸:         0                           2  

 

添加命名空间:

using System.Runtime.InteropServices;  //调用WINDOWS API函数时要用到
using Microsoft.Win32;  //写入注册表时要用到

 

  //以中心方式显示墙纸

 private void menuItemCenter_Click(object sender, System.EventArgs e)
  
...{
      
//设置墙纸显示方式
      RegistryKey myRegKey = Registry.CurrentUser.OpenSubKey("Control Panel/desktop",true);
      
//赋值
      
//注意:在把数值型的数据赋到注册表里面的时候,
      
//如果不加引号,则该键值会成为“REG_DWORD”型;
      
//如果加上引号,则该键值会成为“REG_SZ”型。
      myRegKey.SetValue("TileWallpaper","0");
      myRegKey.SetValue(
"WallpaperStyle","0");

      
//关闭该项,并将改动保存到磁盘
      myRegKey.Close(); 

      
//设置墙纸
      Bitmap bmpWallpaper = (Bitmap)pictureBox1.Image;
      bmpWallpaper.Save(
"resource.bmp",ImageFormat.Bmp); //图片保存路径为相对路径,保存在程序的目录下
      string strSavePath = Application.StartupPath + "/resource.bmp";
      SystemParametersInfo(
20,1,strSavePath,1);
  }

 

  //以平铺方式显示墙纸

  private void menuItemTile_Click(object sender, System.EventArgs e)
  
...{
      
//设置墙纸显示方式
      RegistryKey myRegKey = Registry.CurrentUser.OpenSubKey("Control Panel/desktop",true);
      myRegKey.SetValue(
"TileWallpaper","1");
      myRegKey.SetValue(
"WallpaperStyle","0");
      myRegKey.Close(); 

      
//设置墙纸
      Bitmap bmpWallpaper = (Bitmap)pictureBox1.Image;
      bmpWallpaper.Save(
"resource.bmp",ImageFormat.Bmp); //图片保存路径为相对路径,保存在程序的目录下
      string strSavePath = Application.StartupPath + "/resource.bmp";
      SystemParametersInfo(
20,1,strSavePath,1);
  }

 

  //以拉伸方式显示墙纸

 private void menuItemStretch_Click(object sender, System.EventArgs e)
  
...{
      
//设置墙纸显示方式
      RegistryKey myRegKey = Registry.CurrentUser.OpenSubKey("Control Panel/desktop",true);
      myRegKey.SetValue(
"TileWallpaper","0");
      myRegKey.SetValue(
"WallpaperStyle","2");
      myRegKey.Close(); 

      
//设置墙纸
      Bitmap bmpWallpaper = (Bitmap)pictureBox1.Image;
      bmpWallpaper.Save(
"resource.bmp",ImageFormat.Bmp); //图片保存路径为相对路径,保存在程序的目录下
      string strSavePath = Application.StartupPath + "/resource.bmp";
      SystemParametersInfo(
20,1,strSavePath,1);
  }

 

 

C# 替换桌面背景图片

做这个纯属和郁闷,win7家庭普通版的电脑背景图片居然不能动态切换。去哦一气之下就做了这个public FrmpictureBox()        {            InitializeCo...

C#获取桌面壁纸图片的路径(Desktop Wallpaper)

利用 Windows 的 API 获取桌面壁纸的实际路径,使用的是 SystemParametersInfo 这个API,此API的功能非常丰富,壁纸操作只是一斑 。using System.Run...

Delphi7高级应用开发随书源码

  • 2003年04月30日 00:00
  • 676KB
  • 下载

C# 实现设置桌面背景图片的功能

 using System;using System.Collections.Generic;using System.ComponentModel;using System.Data;using S...

使用C#制作的更换桌面背景程序

使用C#制作的更换桌面背景程序今天是周末,可是没什么地方去,所以有上网来了,突然发现了一篇用VB调用API来更换桌面的程序,我想既然VB可以C#也一定能行,所以就试着做了一下,好吧,来看看我的代码吧....

Delphi7高级应用开发随书源码

  • 2003年04月30日 00:00
  • 676KB
  • 下载

用C#实现动态桌面墙纸(转)

转自:http://www.edu1995.com/jysy/ReadNews.asp?TypeId=16&NewsId=617 用C#实现动态桌面墙纸 发表日期:2009年4月27日编辑: 四...

VC++设置桌面墙纸实例

  • 2013年05月06日 18:05
  • 13KB
  • 下载

使用COM接口对象获得当前桌面墙纸的文件名

1.开发环境WINDOWS+VS2010+MFC Dialog Based 2.为了添加接口对象类,需要在stdafx.h中的#include 行之前增加#include   3.在BOO...
  • zzandyc
  • zzandyc
  • 2017年04月13日 22:14
  • 97
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:用C#设置桌面墙纸
举报原因:
原因补充:

(最多只允许输入30个字)