C#/WPF 设置和启动Windows屏保程序

news/2024/11/22 22:48:06/

前言

        我们平时电脑启动的屏保程序其本质也是应用程序,只是后缀名为.scr。所以我们只需要把应用程序后缀改为.scr,然后右键选择安装即可启动我们自己的屏保程序。

屏保注册表参数

        设置电脑屏保参数,在个性化设置>锁屏界面>屏幕保护程序设置进行调节和设置。设置完成后参数会写入注册表,电脑会根据注册表中设置的参数启动屏保程序。我们也可以使用程序直接设置注册表屏保参数,启动我们自定义屏保程序。

屏保注册表参数如下

  • SCRNSAVE.EXE:默认屏保程序,我们可将此键值设置为我们制作的程序(程序后缀为.scr)
  • ScreenSaveActive:屏保状态,1为启动,0为关闭
  • ScreenSaveTimeout:屏幕保护程序启动前系统的空闲事件,单位为秒,默认为900(15分钟)
  • ScreenSaverIsSecure:默认参数为0,标识不需要用户密码登录即可启动屏保

C#/WPF代码启动自定义屏保

    internal class ComputerHelper{[DllImport("user32.dll")]private static extern int SendMessage(int hWnd, int Msg, int wParam, int lParam);private const int HWND_BROADCAST = 0xffff;private const int WM_SYSCOMMAND = 0x112;private const int SC_SCREENSAVE = 0xf140;/// <summary>/// 启动屏幕程序/// </summary>public static void ScreenSaveStart(){SendMessage(HWND_BROADCAST, WM_SYSCOMMAND, SC_SCREENSAVE, 0);}}public partial class MainWindow : Window{private string screenSaver = "D:\\Test.scr";public MainWindow(){InitializeComponent();}#region Methods/// <summary>/// 更新屏保注册表参数/// </summary>private void UpdateScreenSaverRegist(){//获取user根项RegistryKey user = Registry.CurrentUser;//打开desktop项RegistryKey desktop = user.OpenSubKey("Control Panel\\Desktop", true);if(desktop != null) {//设置屏保程序位置desktop.SetValue("SCRNSAVE.EXE", screenSaver);//是否启动屏保 0:不启动 1:启动desktop.SetValue("ScreenSaveActive", "1");//退出屏保后是否需要登录 0:不需要 1:需要desktop.SetValue("ScreenSaverIsSecure", "1");//电脑无操作后启动屏保时间desktop.SetValue("ScreenSaveTimeout", "60");}}#endregionprivate void btnSetScreenSaver_Click(object sender, RoutedEventArgs e){try{UpdateScreenSaverRegist();ComputerHelper.ScreenSaveStart();}catch (Exception ex){MessageBox.Show($"设置屏保失败->{ex.Message}");}        }}

实例链接:https://download.csdn.net/download/lvxingzhe3/88746976


http://www.ppmy.cn/news/1323289.html

相关文章

ssl解码

https://www.kamailio.org/dokuwiki/doku.php/troubleshooting:tls 这篇文章说ssldump可以解码 但是实操起来往往不行 再请看这篇文章&#xff1a; https://osqa-ask.wireshark.org/questions/7886/ssl-decrypting-problem/ 还好我够机智&#xff0c; 改了下/etc/kamailio…

开源云真机平台-Sonic平台-python自定义脚本-config.json方式实现全局配置参数的读写操作

【主要功能】 config.json方式实现全局配置参数的读写操作 使用python实现以下功能&#xff1a; 1、使用将接口获取的变量值&#xff0c;写入到当前目录下的config文件中&#xff0c;如delayTime10&#xff1b; 2、读取当前目录下的config文件中&#xff0c;特定变量的值&…

10 STM32标准库函数 之 DMA控制器(DMA)所有函数的介绍及使用

10 STM32标准库函数 之 DMA控制器&#xff08;DMA&#xff09;所有函数的介绍及使用 1 DMA库函数预览1.1 函数 DMA_DeInit2.2 函数DMA_Init1.3 函数 DMA_StructInit1.4 函数DMA_Cmd1.5 函数DMA_ITConfig1.6 函 数 DMA_GetCurrDataCounte1.7 函数DMA_GetFlagStatus1.8 7.2.8函数…

数据结构(三)堆和哈希表

目录 哈希表和堆什么是哈希表 &#xff1f;什么是堆 &#xff1f;什么是图 &#xff1f;案例一&#xff1a;使用python实现最小堆案例二 &#xff1a; 如何用Python通过哈希表的方式完成商品库存管理闯关题 &#xff08;包含案例三&#xff1a;python实现哈希表&#xff09; 本…

【JMeter】JMeter连OceanBase数据库

1、下载OB&#xff08;OceanBase简称&#xff0c;下同&#xff09;&#xff0c;下载地址&#xff1a;https://www.oceanbase.com/softwarecenter-enterprise 2、将下载下来的jar包放到jmeter安装目录的 lib 目录下&#xff0c;或者打开JMeter客户端&#xff0c;在测试计划中引入…

使用python连接elasticsearch

有一个困惑了好久的问题&#xff0c;那就是从python里面连接elasticsearch总是报错。大致长这样 一开始我是看网上把es的安全功能关闭&#xff0c;也就是下面的内容&#xff0c;这个要进入到es的docker中去改config/elasticsearch.yml配置文件&#xff0c;但是这样改了以后kib…

STM32F103标准外设库——GPIO 输入、输出 (五)

个人名片&#xff1a; &#x1f981;作者简介&#xff1a;一名喜欢分享和记录学习的在校大学生 &#x1f42f;个人主页&#xff1a;妄北y &#x1f427;个人QQ&#xff1a;2061314755 &#x1f43b;个人邮箱&#xff1a;2061314755qq.com &#x1f989;个人WeChat&#xff1a;V…

Jenkins-Maven Git

整合Maven 安装GIT #更新yum sudo yum update #安装git yum install git 安装Maven插件,在插件管理中心&#xff1a; 配置仓库 配置密码认证 我们可以在这个目录下看到Jenkins 帮我们拉取了代码 /env/liyong/data/docker/jenkins_mount/workspace/maven-job 配置maven打包…