c#调用API更改桌面壁纸,同时修改注册表以避免电脑重启后壁纸还原
2009-06-10 13:56
1296 查看
针对上一篇文章的问题,我自己回去冲写了一下。解决了题目所述的问题。一下是我的源代码:
using System; using System.Collections.Generic; using System.Text; using System.Runtime.InteropServices; using Microsoft.Win32; using System.Drawing; using System.Drawing.Imaging; namespace test { class DeskWallpaper { #region 导入API [DllImport("gdi32.dll")] private static extern bool BitBlt( IntPtr hdcDest, //目标设备的句柄 int nXDest, // 目标对象的左上角的X坐标 int nYDest, // 目标对象的左上角的X坐标 int nWidth, // 目标对象的矩形的宽度 int nHeight, // 目标对象的矩形的长度 IntPtr hdcSrc, // 源设备的句柄 int nXSrc, // 源对象的左上角的X坐标 int nYSrc, // 源对象的左上角的X坐标 System.Int32 dwRop // 光栅的操作值 ); [DllImport("gdi32.dll")] private static extern IntPtr CreateDC( string DriverName, string Device, string lpszOutPut, IntPtr lpInitdata ); [DllImport("user32.dll")] private static extern int SystemParametersInfo( int uAction, int uParam, string lpvParam, int fuWinIni); [DllImport("user32.dll")] private static extern int SystemParametersInfo( int uAction, int uParam, StringBuilder lpvParam, int fuWinIni); #endregion /// <summary> /// /// </summary> /// <param name="namePic"></param> private static void CenterShowPicture(string namePic) { RegistryKey myRegKey = Registry.CurrentUser.OpenSubKey("Control Panel//Desktop", true); myRegKey.SetValue("TileWallpaper","0"); myRegKey.SetValue("WallpaperStyle", "0"); namePic = AppDomain.CurrentDomain.BaseDirectory + namePic; myRegKey.SetValue("Wallpaper", namePic); myRegKey.Close(); SystemParametersInfo(20, 1, namePic, 1); } /// <summary> /// /// </summary> /// <param name="namePic"></param> private static void TileShowPicture(string namePic) { RegistryKey myRegKey = Registry.CurrentUser.OpenSubKey("Control Panel//Desktop", true); myRegKey.SetValue("TileWallpaper", "1"); myRegKey.SetValue("WallpaperStyle", "0"); namePic = AppDomain.CurrentDomain.BaseDirectory + namePic; myRegKey.SetValue("Wallpaper", namePic); myRegKey.Close(); SystemParametersInfo(20, 1, namePic, 1); } /// <summary> /// /// </summary> /// <param name="namePic"></param> private static void StrechShowPicture(string namePic) { RegistryKey myRegKey = Registry.CurrentUser.OpenSubKey("Control Panel//Desktop", true); myRegKey.SetValue("TileWallpaper", "0"); myRegKey.SetValue("WallpaperStyle", "2"); namePic = AppDomain.CurrentDomain.BaseDirectory + namePic; myRegKey.SetValue("Wallpaper", namePic); myRegKey.Close(); int i= SystemParametersInfo(20, 1, namePic, 0x2|0x1); } /// <summary> /// set the deskPicture /// </summary> /// <param name="namePic">the name of the picture</param> /// <param name="ShowKind">the flag of show the Picture ,0-center,1-Tile,2-strech</param> public static void SetDeskPicture(string namePic, int ShowKind) { switch (ShowKind) { case 0: CenterShowPicture(namePic); break; case 1: TileShowPicture(namePic); break; case 2: StrechShowPicture(namePic); break; default: break; } } } }
相关文章推荐
- 安装软件后,不需重启电脑,只需更改注册表
- 如何从C# 桌面应用程序调用Windows 8的WinRT API- WinRT 图表
- 关于病毒修改注册表导致电脑重复重启
- C#调用注册表,修改IE相关配置
- Delphi通过调用COM对象实现更改桌面壁纸
- Atitit. 注册表操作查询 修改 api与工具总结 java c# php js python 病毒木马的原理
- 自己编程实现更改电脑桌面背景并同时播放音乐
- C#调用Win32 API,实现简单的IP地址修改
- c# 修改注册表后不重启计算机生效
- Win7:修改注册表来更改“桌面”、“我的文档”、“收藏夹”的位置
- Windows7 修改注册表来更改“桌面”、“我的文档”、“收藏夹”的位置
- Atitit. 注册表操作查询 修改 api与工具总结 java c# php js python 病毒木马的原理
- c# 更改注册表开机启动+mutex(互斥,同一时间同一台电脑只能运行一个程序)
- C#获取当前电脑桌面的壁纸,并设置成窗体背景图
- Win7:修改注册表来更改“桌面”、“我的文档”、“收藏夹”的位置
- 避免重装系统的情况下,修改IDE为ACHI模式(适合修改注册表后更改BIOS依然蓝屏) 2012/1/21
- Atitit. 注册表操作查询 修改 api与工具总结 java c# php js python 病毒木马的原理
- Win7:修改注册表来更改“桌面”、“我的文档”、“收藏夹”的位置
- c#调用api控制windows关机示例(可以重启/注销)
- 如何从C#桌面应用程序中调用Windows 8的WinRT API (Metro API)