- 浏览: 510930 次
- 性别:
- 来自: 深圳
文章分类
最新评论
-
michao:
大哥,还有aperture.exe吗? 发我一份,找不到呀,m ...
使用aperture框架让AS3与C++通信,执行本地代码 -
Aaron-Joe-William:
文件被删除了。下不了。
SQLite 数据库加密的一种解决方案 -
hanmiao:
樓主的文章不就是來自IBM Developers里的http: ...
mina 入门 -
howesen:
断包与粘包问题,需要处理下就好了
mina接收数据不全(2) -
sniciq:
git clone --recursive git://git ...
ESB学习笔记(Spring Integration实战)
本文介绍使用C#制作屏幕保护的方法,这个屏幕保护就是仿效视窗系统自带的字幕屏保。
屏幕保护程序的扩展名虽然是"scr",但其实是一个可执行的"exe"文件。但他又是一个比较独特的"exe"文件。下面就来探讨一下,用C#是如何编写屏幕保护的整个过程。
一.本文中介绍的程序设计及运行环境
(1).微软视窗2000 服务器版
(2)..Net Framework SDK 正式版
二.C#编写字幕显示屏保程序的关键步骤以及解决方法:
(1).设定程序的窗体符合屏幕保护的要求:
由于屏幕保护程序就是一个可执行程序,所以在编写屏幕保护程序的时候,首先按照可执行程序来设计。但屏幕保护有自身的特点。譬如:屏幕保护都
是充满整个屏幕的,并且没有无边。屏幕保护运行的时候,不能显示任务栏。在程序设计中实现这些特点,关键就在于对窗体的某些属性的设定上。下面是对窗体属
性的设定,就可以满足屏幕保护的要求,具体如下:
this.Name = "ScreenSaver" ;
//窗体运行后无边界
this.FormBorderStyle = FormBorderStyle.None ;
//程序运行后不显示在任务栏上
this.ShowInTaskbar = false ;
//窗体运行后,最大化,充满整个屏幕
(2).使得字符在屏幕上不断移动:
实现字符在屏幕上像字符屏保一样不断移动,是通过一个定时器来完成的。不断移动的字符,其实就是一个Label组件。当设定好Label组件
要显示的字符后,也就设定了在屏幕上要移动的字符。定时器每隔一段时间,都把Label组件的横坐标减去一个定值,这样在定时器的驱动下,Label组件
的位置就变换了,带来的视觉效果,就是字符不断移动。
当Label组件的位置已经移动到屏幕的外面以后,这是就有把Label组件的横坐标回复到起始值(即:屏幕的最右边),然后判断
Label组件的纵坐标是否位于屏幕的顶部,如果在顶部,则把纵坐标的位置重置在中部;如果在中部,则重置在底部;如果在底部,则重置在顶部。经过了这些
判断,字符不仅可以实现从右往左移动,还可以变换字符进入屏幕的位置。从而也丰富了屏幕保护的内容。其实要实现这些判断,首先还必须知道屏幕的工作区域,
因为只有先知道屏幕的工作区域,在能够实现对Label组件的横坐标和纵坐标的设定工作。下面就是实现此步骤地具体代码:
//得到计算机屏幕的工作区域
Rectangle ssWorkArea = Screen.GetWorkingArea ( this ) ;
lblMarquee.Location = new Point ( ssWorkArea.Width - iDistance ,
lblMarquee.Location.Y ) ;
//显示标签
lblMarquee.Visible = true ;
// 增加2个象素点,你可以通过修改speed的值来改变标签的移动速度
iDistance += speed ;
// 如果标签已经走出屏幕,则把标签的位置重定位到屏幕的右边
if ( lblMarquee.Location.X <= -( lblMarquee.Width ) )
{
//Reset the distance to 0.
iDistance = 0 ;
//判断标签的位置是否在顶部,如果在,则重定位到中部
if ( lblMarquee.Location.Y == 0)
lblMarquee.Location = new Point ( lblMarquee.Location.X , ( ssWorkArea.Height / 2 ) ) ;
//判断标签的位置是否在中部,如果在,则重定位到底部
else if ( lblMarquee.Location.Y == ssWorkArea.Height / 2 )
lblMarquee.Location = new Point ( lblMarquee.Location.X , ssWorkArea.Height - lblMarquee.Height ) ;
//重定位到顶部
else
lblMarquee.Location = new Point ( lblMarquee.Location.X , 0 ) ;
}
(3).检测键盘、鼠标状态,确定退出屏幕保护程序:
在屏幕保护运行的时候,当键盘被按动,或者鼠标移动,屏幕保护都会关闭。在实际的程序设计中,检测键盘是否被按动,通过"KeyDown"事
件就可以判断。在程序中,判断鼠标是否移动的思路是通过二个全局变量记录下,程序刚刚运行的时候的鼠标的位置(即:X和Y),当鼠标移动的时候,判断移动
后的位置和记录的位置是否有出入,如果有出入,就关闭屏保。下面代码功能就是检测鼠标移动,并结束屏幕保护,具体如下:
// 把鼠标刚刚开始移动的位置给记录下来
if ( ixStart == 0 && iyStart == 0 )
{
ixStart = e.X ;
iyStart = e.Y ;
return ;
}
//判断自屏幕保护程序运行后,鼠标的位置是否变动
else if ( e.X != ixStart || e.Y != iyStart )
{
Cursor .Show ( ) ;
timerSaver.Enabled = false ;
Application .Exit ( ) ;
};
其中"ixStar"和"iyStart"就是记录程序运行的时候,鼠标的起始位置。
(4).对Windows对屏幕保护设定参数的响应:
当屏幕保护加入到Windows系统后,你就可以通过Windows系统来设定屏幕保护的属性了,由于我们制作的这个屏幕保护,没有可供设置
的选项,但也要对Windows的"设置"按钮进行响应。而要完成这种响应,所用的知识就是在Windows系统中按动"设置"按钮,对屏幕保护进行设定
时,其实也就对屏保程序传递"/c"字符。而要设定口令,则会传递"/a"字符,据此,可以得到代码:
if (args [ 0 ].Substring ( 0 , 2 ).Equals ( "/c" ) )
{
MessageBox.Show("此屏幕保护没有可供设置的选项!","用C#制造屏幕保护" ,
MessageBoxButtons.OK ,MessageBoxIcon.Information ) ;
Application.Exit ( ) ;
}
else if ( args [ 0 ] == "/a" )
{
MessageBox.Show("此屏幕保护没有可供设定口令的选项!","用C#制造屏幕保护" ,
MessageBoxButtons.OK ,MessageBoxIcon.Information ) ;
Application.Exit ( ) ;
}
三.总结:
由于屏幕保护都是Windows程序,所以编译的时候,要产生Windows程序,编译的命令如下:
csc /t:winexe screen.cs
在正确编译"Screen.cs"后,可以得到"Screen.exe"文件,把"Screen.exe"改名为"Screen.scr",并拷贝到Windows的"System32"目录中去。至此这个字符屏保就完成了从编写到配置的全部工作了。
评论
lblMarquee.Location = new Point ( ssWorkArea.Width - iDistance ,
lblMarquee.Location.Y ) ;
“iDistance”是什么啊!!!
发表评论
-
RichTextBox 添加控件,被禁用如何处理 button
2010-11-01 18:45 1296WPF中RichTextBox的确非 ... -
归纳一下:C#线程同步的几种方法
2010-10-28 11:18 1327我们在编程的时候,有时会使用多线程来解决问题, ... -
关于WPF ListView数据绑定 入门 及分类,排序
2010-09-03 18:14 9406不多说,先直接上代码 ... -
关于WPF 数据绑定简单介绍及入门
2010-09-02 20:07 5387今天搞了一下午的数据绑定,由于以前用FLEX的数据绑定很 ... -
何为插件化系统,插件化系统有何优势
2010-08-10 14:28 2395当一个软件项目开 ... -
回调函数原理
2010-08-10 12:04 2245回调函数原理 声明CALLBACK 调用(call ... -
初探C# 异常处理
2010-08-03 10:39 1331一、基础 在C# 里,异 ... -
C#中使用try catch对系统性能的影响和处理机制的学习总结!
2010-08-03 10:31 2852问题1:当一段代码被try ... -
C# WebClient上传下载时进度条显示,找了好久才找到的哦!
2010-07-23 11:05 77262、代码: using System; using Sys ... -
WinFrom通过WebClient上传下载文件(带进度条)
2010-07-23 10:48 4303(2009-09-27 12:18:09) 转 ... -
关于图片保存问题
2010-07-15 20:01 1002如果你在用PngBitmapEncoder之类的 Save图片 ... -
Windows 7 任务栏开发 之 进度条(Progress Bar)
2010-07-12 14:33 2002上一篇 我们完成了“覆盖图标”(Overlay ... -
WPF 新弹出窗口抢焦点问题
2010-06-21 16:34 4128新弹出窗口抢了正在使用的窗口焦点,这个问题烦了好久,今天终于有 ... -
C# 第三方控件
2010-06-08 10:29 3077DevExpress,NetAdvantage 这两套算是最全 ... -
浅析C#中三层架构的实现
2010-06-02 16:14 1636本文讨论如何在C#中实现三层架构,使用MS Acces ... -
数据绑定
2010-05-31 18:42 874http://liutiemeng.blog.51cto.co ... -
C# 修改警告心得
2010-05-22 17:08 14291.(CA1031)如果有try catch最好不要捕获Exc ... -
C# log4net
2010-05-17 13:40 2224说明:本程序演示如何利用log4net记录程序日志信息。log ... -
C# 开机启动
2010-05-13 17:41 1662C# winform程序设置开机 ... -
Base64编码的字符串与图片的转换 C#
2010-04-28 15:05 2847using System; using System.Col ...
相关推荐
【标题】"下雪屏保程序 C#制作 欢迎下载" 揭示了这是一个使用C#编程语言开发的动态屏幕保护程序,其特色是模拟下雪的场景,为用户带来美观且有趣的视觉体验。C#是一种面向对象的、类型安全的、现代的编程语言,由...
【C#制作屏保】教程 制作自己的C#屏保程序并不复杂,只需掌握基本的Windows窗体应用程序开发技巧即可。下面将详细讲解如何利用C#实现这一目标,以模仿Windows XP自带的屏幕保护程序为例。 首先,我们需要创建一个...
【C#制作的个性屏保程序】是一款利用C#编程语言开发的个性化屏幕保护程序,它不仅具有传统的屏幕保护功能,还能实现换肤、播放音乐以及实时显示时间等多种功能,极大地提升了用户的使用体验。下面将详细阐述这个项目...
以上就是利用C#制作屏幕锁屏工具的主要技术和步骤。通过这个项目,开发者不仅可以掌握Windows Forms的基本应用,还能深入了解图形绘制、多线程编程、系统权限管理以及安全性设计等多个方面的知识。如果你对源代码感...
在本项目"雪花屏保"中,开发者利用C#的图形和动画处理能力,创建了一个模拟飘落雪花效果的屏幕保护程序。 首先,雪花屏保的实现基于Windows Forms或WPF(Windows Presentation Foundation)这两个C#的UI框架。...
C# 屏幕保护程序是一种使用 C# 语言开发的屏幕保护程序,包括源代码及制作方法。下面将对该程序的实现步骤和代码进行详细地解释。 一、屏幕保护程序的实现步骤: 1. 在 Visual Studio.Net 下新建一个 C# 的 ...
本项目是使用C#编程语言编写的屏幕保护程序源码,适合对C#有一定了解并希望学习或实践屏幕保护程序开发的程序员。 在C#中,我们可以利用.NET Framework提供的类库来创建屏幕保护程序。主要涉及的类包括System....
在本文中,我们将深入探讨如何使用C#编程语言来实现一个功能,即监控用户的鼠标操作,并在用户在10秒内没有活动时自动启动屏保界面。C#是一种广泛用于开发Windows应用程序的强大工具,它提供了丰富的类库和API,使得...
- 屏幕保护程序需要遵循特定的入口函数和运行机制,比如`ScreenSaverProc`函数,该函数负责处理屏幕保护的启动、暂停、恢复和结束等事件。 3. **项目实现**: - "屏保仿真"很可能是这个项目的源代码文件,可能...
本项目是用C#编程语言开发的个人屏幕保护程序,对于想要了解如何用C#制作屏幕保护程序的开发者来说,这是一个很好的学习案例。 首先,我们需要理解C#的基础知识。C#是一种面向对象的编程语言,由微软公司推出,主要...
描述中提到,这个项目是作者之前"C#制作qq截图自动框选功能"的改进版本,主要优化了代码,并且现在无需积分即可下载。这表明作者在原有的基础上进行了调试和完善,提高了用户体验,使得用户可以更加方便地获取并使用...
例如,使用`user32.dll`中的函数来设置屏幕保护程序的行为和交互。 3. **Screen Saver Interface(屏幕保护程序接口)**:Windows提供了一套接口,允许开发者创建符合标准的屏保程序。这包括实现`IScreenSaver`接口...
我们可以使用`System.Windows.Forms.NativeWindow`和`SetWindowsHookEx` API函数来实现这个功能: ```csharp using System.Runtime.InteropServices; private const int WH_KEYBOARD_LL = 13; private static ...
- **UserPreferenceChangedEventArgs类**:在用户偏好(如桌面背景、屏幕保护程序)发生变化时触发,用于实时更新界面显示。 - **UserPreferenceChangingEventArgs类**:在用户偏好即将改变时触发,允许在实际更改...
这个压缩包包含了一个特定的案例——"案例3:用C#制作字幕显示屏幕保护",这是一个非常适合初学者练习和提升C#技能的项目。下面将详细介绍这个案例中的关键知识点。 1. **C#语言基础**:首先,这个案例会涉及到C#...
开发者可以从各种在线资源库获取这类素材,用于制作吸引人的启动屏幕、背景图案或者按钮等元素。 3. **抓包工具**:抓包工具在网络编程和调试中扮演着重要角色。它们能够捕获网络通信数据,帮助开发者分析网络流量...
制作屏保的过程涉及到编程和设计知识,尤其是对于DIY(Do It Yourself)屏保来说,用户可能需要了解基础的编程语言,如Visual Basic或C#,以及图形界面设计技巧。屏幕保护程序通常是由一系列代码组成的,这些代码会...
Windows API提供了丰富的函数,可以调用系统资源,实现屏幕保护的动画效果和交互功能。 2. **图形处理**:屏保程序通常包含图形和动画,因此需要对DirectX或OpenGL等图形库有一定的了解,以实现流畅的视觉效果。 3...
243 实例165 开机祝福程序 243 实例166 制作家庭影集 245 实例167 产品电子报价 246 实例168 产品滚动展示程序 248 实例169 将图片资源添加到EXE里 249 5.6 屏幕保护相关程序 ...