如何获得屏幕当前的壁纸?不用注册表

argo_lzq 2005-03-17 06:15:57
从注册表得到屏幕当前的壁纸并不难,但有时用api更改墙纸后,在注册表上没有资料,我试过用SPI_GETDESKWALLPAPER和SystemParametersInfo(115,MAX_PATH,path,0);之类的,不知是参数没有设好还是什么,并没有取得成功。好象这是个很高深的问题,好久了,没有人能搞定,高手可否赐教?


...全文
135 点赞 收藏 13
写回复
13 条回复
argo_lzq 2005年04月17日
C#中组件添加项中,并没有ActiveDesktop 的COM,必须要用到API吗?还是有别的引用途径?谢谢
回复 点赞
coolksj 2005年04月15日
需要使用ActiveDesktop 的COM。。。我的顶尖虚拟桌面2005就是这样实现的,不过不能贴源码给你
回复 点赞
argo_lzq 2005年04月15日
这个早就用过了,在注册表里用的是.gif,在WinAPI.SystemParametersInfo()中只能用.bmp,这就是两个文件名完全不同了,内容也会不同,.gif的文件会动画的,.bmp是静止的,根本无法判断目前的这个BMP内容是我们原来的.gif的内容。
回复 点赞
egxsun 2005年04月09日
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对桌面壁纸进行操作
回复 点赞
lxkim 2005年04月09日
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"表示"平铺"。
回复 点赞
syeerzy 2005年03月18日
用api的setdesk,是不会在注册表中写下记录的,怎么取?用注册表根本取不到的,老大,这里真的没有高手吗?


如果能用注册表取到文件名和路径不就行了么??图片本身当然不会在注册表里。
回复 点赞
DeltaCat 2005年03月18日
shit
回复 点赞
argo_lzq 2005年03月18日
用api的setdesk,是不会在注册表中写下记录的,怎么取?用注册表根本取不到的,老大,这里真的没有高手吗?
回复 点赞
argo_lzq 2005年03月18日
各位老大,这问题真的那么难吗?
回复 点赞
argo_lzq 2005年03月18日
好象大家还没有明白,SystemParametersInfo(SPI_SETDESKWALLPAPER, 0, "c:\temp\shit.bmp",0);
能够设置壁纸,把以前的给覆盖掉;但设完后,注册表是不会有任何反映的,下次启动,也会重新显示注册表的图片,怎么才能取到现在这个用api设立的壁纸的文件路径和名称?或者判断是空的。国外有人试过SystemParametersInfo(SPI_GETDESKWALLPAPER, (uint)sWallpaper.Length, sWallpaper, (uint)0),但也没有成功。哪位高手得闲可否帮帮忙? 菜bird的就不要再说那些不好听的话了。好吗。
回复 点赞
zealic 2005年03月18日
绝对要用注册表!!!
回复 点赞
argo_lzq 2005年03月17日
不行,这样不能得到具体的文件,不过还是感谢
回复 点赞
cybernaute 2005年03月17日
被使用的墙纸,会被复制到一个特定的文件夹下
win2000为例,C:\Documents and Settings\Administrator\Application Data\Microsoft\Internet Explorer
在这个文件夹下,会有一个“Internet Explorer 墙纸.bmp”的文件。他的内容随墙纸的不同而不同,但名字好象是一样的。

不知道这个能不能给你点提示。

小弟菜鸟,见笑了!
回复 点赞
发动态
发帖子
C#
创建于2007-09-28

8.5w+

社区成员

64.0w+

社区内容

.NET技术 C#
社区公告
暂无公告