标题:初学c#,想写一个程序 开机自动启动 每间隔10分钟在c:\pic\目录下随机挑选一 ...
只看楼主
枫落de夜
Rank: 1
等 级:新手上路
帖 子:9
专家分:0
注 册:2013-4-11
结帖率:33.33%
已结贴  问题点数:20 回复次数:9 
初学c#,想写一个程序 开机自动启动 每间隔10分钟在c:\pic\目录下随机挑选一张图片作为桌面壁纸
初学c#,想写一个程序 开机自动启动 每间隔10分钟在c:\pic\目录下随机挑选一张图片作为桌面壁纸
搜索更多相关主题的帖子: 间隔 桌面壁纸 
2013-05-02 11:28
yhlvht
Rank: 13Rank: 13Rank: 13Rank: 13
等 级:贵宾
威 望:36
帖 子:707
专家分:4405
注 册:2011-9-30
得分:20 
程序代码:
public enum ShowType
        {
            居中,
            平铺,
            拉伸
        }

        [DllImport("user32.dll", EntryPoint = "SystemParametersInfo")]
        public static extern int SystemParametersInfo(int uAction, int uParam, string lpvParam, int fuWinIni);
        private FileInfo[] file = null;

        private void timer1_Tick(object sender, EventArgs e)
        {
            Random rd = new Random();
            int index = rd.Next(1, file.Length);
            string path = file[index].DirectoryName + "\\" + file[index].Name;
            SystemParametersInfo(20, 1, path, 1);
        }

        private void Form1_Load(object sender, EventArgs e)
        {
            //设置墙纸显示方式
            SetShowType(ShowType.拉伸);
            file = GetFile();
            timer1.Start();
        }

        public void SetShowType(ShowType type)
        {
            RegistryKey myRegKey = Registry.CurrentUser.OpenSubKey(@"Control Panel\desktop", true);
            if (type == ShowType.平铺)
            {
                myRegKey.SetValue("TileWallpaper", "1");
                myRegKey.SetValue("WallpaperStyle", "0");
            }
            else if (type == ShowType.居中)
            {
                myRegKey.SetValue("TileWallpaper", "0");
                myRegKey.SetValue("WallpaperStyle", "0");
            }
            else if (type == ShowType.拉伸)
            {
                myRegKey.SetValue("TileWallpaper", "0");
                myRegKey.SetValue("WallpaperStyle", "2");
            }
            myRegKey.Close();
        }

        public FileInfo[] GetFile()
        {
            DirectoryInfo dirInfo = new DirectoryInfo("c:\\pic");
            return dirInfo.GetFiles();
        }


开机启动的话,你就建一个快捷方式,放在windows的开始菜单->所有程序->启动
图片要bmp格式的才行,jpg的不行,你可以自己写jpg转bmp

[ 本帖最后由 yhlvht 于 2013-5-2 13:59 编辑 ]
2013-05-02 13:57
枫落de夜
Rank: 1
等 级:新手上路
帖 子:9
专家分:0
注 册:2013-4-11
得分:0 
能不能给讲下大概的思路,因为代码不是很看得懂
2013-05-02 21:01
枫落de夜
Rank: 1
等 级:新手上路
帖 子:9
专家分:0
注 册:2013-4-11
得分:0 
回复 2楼 yhlvht
能不能给讲下大概的思路,因为代码不是很看得懂,谢谢了
2013-05-02 21:03
yhlvht
Rank: 13Rank: 13Rank: 13Rank: 13
等 级:贵宾
威 望:36
帖 子:707
专家分:4405
注 册:2011-9-30
得分:0 
SetShowType()方法是更改注册表,实现壁纸的显示方式
SystemParametersInfo()方法是windows的API方法,用于显示壁纸
GetFile()是获取C:\\pic目录下的文件
timer1_Tick是定时器的事件,每一定时间从文件数组中随机取一个图片路径,然后调用SystemParametersInfo()方法显示壁纸
2013-05-03 01:48
zhangwei
Rank: 1
等 级:新手上路
威 望:1
帖 子:277
专家分:0
注 册:2005-5-3
得分:0 
高手啊

主动沟通......
2013-05-03 09:10
moridiansha
Rank: 6Rank: 6
来 自:承德
等 级:侠之大者
威 望:4
帖 子:254
专家分:417
注 册:2009-10-21
得分:0 
最近在学习重构,练习一下
         public void SetShowType(ShowType type)
        {
            RegistryKey myRegKey = Registry.CurrentUser.OpenSubKey(@"Control Panel\desktop", true);
            if (type == ShowType.平铺)
            {
                myRegKey.SetValue("TileWallpaper", "1");
                myRegKey.SetValue("WallpaperStyle", "0");
            }
            else if (type == ShowType.居中)
            {
                myRegKey.SetValue("TileWallpaper", "0");
                myRegKey.SetValue("WallpaperStyle", "0");
            }
            else if (type == ShowType.拉伸)
            {
                myRegKey.SetValue("TileWallpaper", "0");
                myRegKey.SetValue("WallpaperStyle", "2");
            }
            myRegKey.Close();
        }
重构为
        public void SetShowType(ShowType type)
        {
            if (type == ShowType.平铺)
            {
                SetRegistryKey("1", "0");
            }
            else if (type == ShowType.居中)
            {
                SetRegistryKey("0", "0");
            }
            else if (type == ShowType.拉伸)
            {
                SetRegistryKey("0", "2");
            }
        }

        private void SetRegistryKey(string tileWallpaper, string wallpaperStyle)
        {
            RegistryKey myRegKey = Registry.CurrentUser.OpenSubKey(@"Control Panel\desktop", true);
            myRegKey.SetValue("TileWallpaper", tileWallpaper);
            myRegKey.SetValue("WallpaperStyle", wallpaperStyle);
            myRegKey.Close();
        }

www.qysy.tk
2013-05-03 10:28
枫落de夜
Rank: 1
等 级:新手上路
帖 子:9
专家分:0
注 册:2013-4-11
得分:0 
回复 6楼 yhlvht
十分感谢
2013-05-04 20:50
zhang_yang
Rank: 1
等 级:新手上路
帖 子:2
专家分:2
注 册:2013-4-19
得分:0 
写成服务吧!
2013-05-06 16:07



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-406058-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.262481 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved