如何获得屏幕当前的壁纸?不用注册表 从注册表得到屏幕当前的壁纸并不难,但有时用api更改墙纸后,在注册表上没有资料,我试过用SPI_GETDESKWALLPAPER和SystemParametersInfo(115,MAX_PATH,path,0);之类的,不知是参数没有设好还是什么,并没有取得成功。好象这是个很高深的问题,好久了,没有人能搞定,高手可否赐教? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 被使用的墙纸,会被复制到一个特定的文件夹下win2000为例,C:\Documents and Settings\Administrator\Application Data\Microsoft\Internet Explorer在这个文件夹下,会有一个“Internet Explorer 墙纸.bmp”的文件。他的内容随墙纸的不同而不同,但名字好象是一样的。不知道这个能不能给你点提示。小弟菜鸟,见笑了! 用api的setdesk,是不会在注册表中写下记录的,怎么取?用注册表根本取不到的,老大,这里真的没有高手吗? 用api的setdesk,是不会在注册表中写下记录的,怎么取?用注册表根本取不到的,老大,这里真的没有高手吗?如果能用注册表取到文件名和路径不就行了么??图片本身当然不会在注册表里。 好象大家还没有明白,SystemParametersInfo(SPI_SETDESKWALLPAPER, 0, "c:\temp\shit.bmp",0);能够设置壁纸,把以前的给覆盖掉;但设完后,注册表是不会有任何反映的,下次启动,也会重新显示注册表的图片,怎么才能取到现在这个用api设立的壁纸的文件路径和名称?或者判断是空的。国外有人试过SystemParametersInfo(SPI_GETDESKWALLPAPER, (uint)sWallpaper.Length, sWallpaper, (uint)0),但也没有成功。哪位高手得闲可否帮帮忙? 菜bird的就不要再说那些不好听的话了。好吗。 1、用鼠标右键点击桌面,会看到【背景】→【墙纸】里面的文件名是空的。 2、重新启动后桌面墙纸消失。 3、没告诉您怎么切换"居中"或"平铺"。 怎么解决这些问题呢? 1、Windows的墙纸必须以BMP格式的文件存放在Windows目录下面,如果您的图片不在该目录 或不是BMP文件,那么就会出现第一个问题。因此必须把您的图片转换成BMP文件并复制到Windows 目录下面。 2、要使重新启动后需要在注册表里面修改相应的键值,具体位置是 HKEY_CURRENT_USER\Control Panel\desktop中的Wallpaper键,让它的键值等于您的全路径文 件名。 3、在更换墙纸以前首先设置是否"居中",需要修改注册表中HKEY_CURRENT_USER\Control Panel\desktop中的TileWallpaper键,键值"0"表示"居中","1"表示"平铺"。 RegistryKey RK = Registry.CurrentUser; RegistryKey ControlPanel = RK.OpenSubKey("Control Panel",true); RegistryKey Desktop = ControlPanel.OpenSubKey("Desktop",true); Desktop.SetValue("Wallpaper",FileNameStr);//FileNameStr是图片路径和名称 int nResult = WinAPI.SystemParametersInfo(SPI_SETDESKWALLPAPER,1,FileNameStr,SPIF_SENDCHANGE); //用WINAPI对桌面壁纸进行操作 这个早就用过了,在注册表里用的是.gif,在WinAPI.SystemParametersInfo()中只能用.bmp,这就是两个文件名完全不同了,内容也会不同,.gif的文件会动画的,.bmp是静止的,根本无法判断目前的这个BMP内容是我们原来的.gif的内容。 需要使用ActiveDesktop 的COM我的顶尖虚拟桌面2005就是这样实现的,不过不能贴源码给你 C#中组件添加项中,并没有ActiveDesktop 的COM,必须要用到API吗?还是有别的引用途径?谢谢 C#获取网页验证码图片 [源码]115网盘助手v1.1 [批量刷分|续期|采集] Xml文件被使用 后台类中写一段JAVA脚本弹出页面代码,怎么写? 求救:如何将一个.xml文件写入SQL的数据库 怎样根据节点属性值得到节点文本 求dd/mm/yyyy正则表达式 获取ftp服务器文件名空格的问题 求一邮件群发c#源码,送visual c#.net技术内幕光盘.rar 怎样把Excel中的数据导入到SQL SERVER2005数据库中? 上海今天举行反日游行,我感动的哭了! 如何用程序"在桌面上锁定web项目"?
win2000为例,C:\Documents and Settings\Administrator\Application Data\Microsoft\Internet Explorer
在这个文件夹下,会有一个“Internet Explorer 墙纸.bmp”的文件。他的内容随墙纸的不同而不同,但名字好象是一样的。不知道这个能不能给你点提示。小弟菜鸟,见笑了!
如果能用注册表取到文件名和路径不就行了么??图片本身当然不会在注册表里。
能够设置壁纸,把以前的给覆盖掉;但设完后,注册表是不会有任何反映的,下次启动,也会重新显示注册表的图片,怎么才能取到现在这个用api设立的壁纸的文件路径和名称?或者判断是空的。国外有人试过SystemParametersInfo(SPI_GETDESKWALLPAPER, (uint)sWallpaper.Length, sWallpaper, (uint)0),但也没有成功。哪位高手得闲可否帮帮忙? 菜bird的就不要再说那些不好听的话了。好吗。
2、重新启动后桌面墙纸消失。
3、没告诉您怎么切换"居中"或"平铺"。
怎么解决这些问题呢?
1、Windows的墙纸必须以BMP格式的文件存放在Windows目录下面,如果您的图片不在该目录 或不是BMP文件,那么就会出现第一个问题。因此必须把您的图片转换成BMP文件并复制到Windows 目录下面。
2、要使重新启动后需要在注册表里面修改相应的键值,具体位置是 HKEY_CURRENT_USER\Control Panel\desktop中的Wallpaper键,让它的键值等于您的全路径文 件名。
3、在更换墙纸以前首先设置是否"居中",需要修改注册表中HKEY_CURRENT_USER\Control Panel\desktop中的TileWallpaper键,键值"0"表示"居中","1"表示"平铺"。
RegistryKey ControlPanel = RK.OpenSubKey("Control Panel",true);
RegistryKey Desktop = ControlPanel.OpenSubKey("Desktop",true);
Desktop.SetValue("Wallpaper",FileNameStr);//FileNameStr是图片路径和名称
int nResult = WinAPI.SystemParametersInfo(SPI_SETDESKWALLPAPER,1,FileNameStr,SPIF_SENDCHANGE); //用WINAPI对桌面壁纸进行操作