前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >使用 WPF 开发一个 Windows 屏幕保护程序

使用 WPF 开发一个 Windows 屏幕保护程序

作者头像
walterlv
发布2020-02-10 14:23:59
1.2K0
发布2020-02-10 14:23:59
举报

使用 WPF 开发一个 Windows 屏幕保护程序

2018-12-22 02:24

最近有小伙伴问我如何可以让 Windows 静置一段时间不操作之后,显示一个特殊的界面。我想了想,屏幕保护程序可以做到这一点,而且,屏幕保护程序的开发也是非常简单的。

本文将介绍如何为 Windows 这一悠久的功能进行开发。


屏幕保护程序的本质

屏幕保护程序本质上就是一个 Win32 窗口应用程序。

好了,这一节真的结束了……

屏幕保护程序的本质
屏幕保护程序的本质

编译好一个窗口应用程序之后,把扩展名改为 scr,于是你的屏幕保护程序就做好了。

安装屏幕保护程序

现在,在你的 scr 程序上点击右键,可以看到一个 “安装” 选项,点击之后就安装了。

安装屏幕保护程序
安装屏幕保护程序

安装之后,你会立即看到我们的屏幕保护程序已经运行起来了。

首次运行的屏幕保护程序
首次运行的屏幕保护程序

为了方便截图,我调了下窗口大小。实际上本应该是 Visual Studio 创建的空 WPF 程序的默认大小。

处理屏幕保护程序参数

我的屏幕保护程序是一个非常简单的程序,几乎就是默认的模板。只是,现在加上了一点文字,输出命令行参数。

代码语言:javascript
复制
<Window x:Class="Walterlv.DirextXDemo.Wpf.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
        xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
        mc:Ignorable="d"
        Title="Walterlv.ScreenSaver" Height="450" Width="800">
    <Grid>
        <TextBlock x:Name="ArgsTextBlock" VerticalAlignment="Center" TextAlignment="Center" />
    </Grid>
</Window>
代码语言:javascript
复制
public partial class MainWindow : Window
{
    public MainWindow()
    {
        InitializeComponent();
        Loaded += OnLoaded;
    }

    private async void OnLoaded(object sender, RoutedEventArgs e)
    {
        var args = Environment.GetCommandLineArgs().Skip(1).ToArray();
        Args.Text = string.Join(Environment.NewLine, args);
    }
}

在前面的截图中,我们看到参数是 “/p 8457636”,这是表示此程序需要在预览窗格中进行预览。

还有其他参数,用于处理其他情况:

  • /s 屏幕保护程序开始,或者用户点击了 “预览” 按钮
  • /c:463970 用户点击了 “设置” 按钮
  • /p 8457636 用户选中屏幕保护程序之后,在预览窗格中显示
屏幕保护程序参数
屏幕保护程序参数

实际上屏幕保护程序开始和预览是不同的。预览的时候,只会启动你的程序;而实际开始的时候,Windows 会先为你创建一个白色的背景,覆盖所有的屏幕,然后你的屏幕保护程序窗口显示在那个白色的背景之上。

实际上运行时,后面有白色的背景
实际上运行时,后面有白色的背景

请预防一些坑

你可能会发现 Windows 自带的屏幕保护程序在 C:\Windows\System32 文件夹中。但!那不是你放屏幕保护程序的地方!如果把你的屏幕保护程序拷贝到那个 Windows 的受信任目录下,你的程序是无法运行起来的。正确的做法,是右键,使用 “安装” 选项进行安装。

我后面附的链接中可能说屏幕保护程序还要有一些其他的要求,例如必须全屏、不要显示到任务栏等等。但那其实并不是强制性的要求,比如本文就显示了一个普通的窗口。


参考资料

本文会经常更新,请阅读原文: https://blog.walterlv.com/post/write-a-windows-scr

本作品采用 知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议 进行许可。欢迎转载、使用、重新发布,但务必保留文章署名 吕毅 (包含链接: https://blog.walterlv.com ),不得用于商业目的,基于本文修改后的作品务必以相同的许可发布。如有任何疑问,请 与我联系 (walter.lv@qq.com)

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2018-12-22 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 使用 WPF 开发一个 Windows 屏幕保护程序
    • 屏幕保护程序的本质
      • 安装屏幕保护程序
        • 处理屏幕保护程序参数
          • 请预防一些坑
          领券
          问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档