[译]用C#创建一个屏幕保护程序

本文档详细介绍了如何使用C#编程语言创建一个屏幕保护程序,包括理解命令行参数、处理预览和配置模式,以及如何安装和配置屏幕保护程序。教程中提到的屏幕保护程序会在屏幕上随机显示一行文本,用户可以自定义显示内容和颜色。
摘要由CSDN通过智能技术生成

 用C#创建一个屏幕保护程序

 

 原文地址: http://www.harding.edu/fmccown/screensaver/screensaver.html

 

简介

一个Windows屏幕保护程序是根据接收到的命令行参数来显示一个配置窗体,或者一个预览窗体的简单的Windows应用程序。Windows屏幕保护程序以.scr为后缀名并且一般存储在Windows\system32目录下,如果你的是64位的版本,则存储在Windows\SysWOW64目录下。

这个教程会像你演示怎样用Visual Studio .NET中的C#语言创建一个屏幕保护程序。我们的屏幕保护程序会将同一行文本随机的在屏幕上的不同位置显示。用户能够更改我们保存在注册表中用来显示文本的内容。这个教程假设你对Visual Studio 和C#有些熟悉。

如果你赶时间并且只想下载已经完成的项目,点击这里,解压这个文件夹,在Visual Studio中载入解决方案(我的项目使用 VS 2010创建的)。

这是我在几年前写的这个修正后的屏幕保护程序教程。非常感谢对修正我的教程很有帮助的Jacob Jordan'sMaking a C# screensaver教程,同时我也在Lucian Wischik's 的文章中发现了一些有用的技巧,How to write a 32bit screen saver.

准备开始

尽管我们可以用.NET编程语言中的任意一种来开发一个屏幕保护程序,但在这我们将使用C#编程语言。

首先启动Visual Studio(我将会用VS 2010,但是Visual C#2010学习版也可以)并且创建一个名字为ScreenSaver的Widnows窗体应用程序。

接下来,双击解决方案资源管理器中的Program.cs 文件。这个文件包含主函数,是.NET执行的入口点:

static void Main()  

{  

    Application.EnableVisualStyles();  

    Application.SetCompatibleTextRenderingDefault(false);  

    Application.Run(new Form1());  

} 

Application.Run() 调用上面的实例Form1窗体并不断循环执行,处理窗体信息。当窗体被关闭时,方法返回值并且程序终止。

我们很快会对这个循环进行修改,但是,在修改之前,我们首先重命名 Form1 为更有描述性的文字。用鼠标选中文字“Form1”并按F2。输入ScreenSaverForm作为这个窗体的新名称并确定。

命令行参数

注意简介中的信息,一个屏幕保护程序接收命令行参数来选择哪个"模式"应该被执行。这里有三个可以使大写或小写的命令行参数:

1. /p - 显示屏幕保护程序在屏幕保护程序的选择对话框中
2. /c - 显示屏幕保护程序的配置对话框
3. /s - 全屏显示屏幕保护程序

如果没有传递任何参数,屏幕保护程序默认提供/C

如果传递的是参数/p,一个十六进制的数作为父窗体的句柄也被传递。例如,我们的屏幕保护程序可能传递/p 1234567。一个窗体句柄也可能通过/c传递。或者,这个窗体的句柄也可能在第一个参数和句柄中使用逗号来传递。一些例子:/p:1234567 和 /c:7654321。因此我们需要处理这些情况。

让我们来重写Main方法以便于它接收命令行参数并分别处理这三个参数。用下面的代码覆盖Main方法的全部内容。

static void Main(string[] args)  
{  
    Application.EnableVisualStyles();  
    Application.SetCompatibleTextRenderingDefault(false);  

    if (args.Length > 0)  
    {  
        string firstArgument = args[0].ToLower().Trim();  
        string secondArgument = null;  
           
        // Handle cases where arguments are separated by colon.   
        // Examples: /c:1234567 or /P:1234567  
        if (firstArgument.Length > 2)  
        {  
            secondArgument = firstArgument.Substring(3).Trim();  
            firstArgument = firstArgument.Substring(0, 2);  
        }  
        else if (args.Length > 1)  
            secondArgument = args[1];  

        if (firstArgument == "/c")           // Configuration mode  
        {  
            // TODO  
        }  
        else if (firstArgument == "/p")      // Preview mode  
        {  
            // TODO  
        }  
        else if
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值