/// <summary>
/// 系统控制类,关机,关闭显示器,打开屏幕保存程序等
/// </summary>
public class SystemPowerController
{
private const int WM_SYSCOMMAND = 0x112; //系统消息
private const int SC_SCREENSAVE = 0xF140; //启动屏幕保护消息
private const int SC_MONITORPOWER = 0xF170; //关闭显示器的系统命令
private static readonly IntPtr HWND_BROADCAST = new IntPtr(0xffff); //广播消息,所有顶级窗体都会接收 [System.Runtime.InteropServices.DllImport("user32.dll")]
private static extern IntPtr SendMessage(IntPtr hWnd, uint Msg, int wParam, int lParam); [System.Runtime.InteropServices.DllImport(@"user32.dll", EntryPoint = "ExitWindowsEx", CharSet = System.Runtime.InteropServices.CharSet.Ansi)]
private static extern int ExitWindowsEx(int uFlags, int dwReserverd); [System.Runtime.InteropServices.DllImport("winmm.dll", EntryPoint = "mciSendStringA")]
private static extern int mciSendString(string lpstrCommand, StringBuilder lpstrReturnString, int uReturnLenght, IntPtr hwndCallback); /// <summary>
/// 显示器操作,打开、关闭、省电状态
/// </summary>
/// <param name="power">指示对显示器用何种操作</param>
public void MonitorPower(MonitorPowerType power)
{
SendMessage(HWND_BROADCAST, WM_SYSCOMMAND, SC_MONITORPOWER, (int)power);
} /// <summary>
/// 开启屏幕保护程序
/// </summary>
public void ScreenSave()
{
SendMessage(HWND_BROADCAST, WM_SYSCOMMAND, SC_SCREENSAVE, 0);
} /// <summary>
/// 系统操作,注销windows、关机、重启
/// </summary>
/// <param name="exit">指示对windows进行何种操作</param>
public void ExitWindows(ExitWindowsType exit)
{
try
{
switch (exit)
{
case ExitWindowsType.Exit://注销
ExitWindowsEx(0, 0);
break;
case ExitWindowsType.Off://关机
HideShutdownUi(" -s -t 0");
break;
case ExitWindowsType.Restart://重启
HideShutdownUi(" -r -t 0");
break;
}
}
catch (Exception)
{
throw;
}
} private void HideShutdownUi(string arguments)
{
//声明一个程序信息类
System.Diagnostics.ProcessStartInfo Info = new System.Diagnostics.ProcessStartInfo();
//设置外部程序名
Info.FileName = "Shutdown.exe";
//设置隐藏窗口
Info.WindowStyle = System.Diagnostics.ProcessWindowStyle.Hidden;
//设置外部程序的启动参数(命令行参数)为test.txt
Info.Arguments = arguments;
//设置外部程序工作目录为 C:\
//Info.WorkingDirectory = "C:\\";
//声明一个程序类
System.Diagnostics.Process Proc;
try
{
//
//启动外部程序
//
Proc = System.Diagnostics.Process.Start(Info);
}
catch (System.ComponentModel.Win32Exception exc)
{
throw exc;
}
} /// <summary>
/// 打开或关闭光驱
/// </summary>
/// <param name="open">true:打开,false:关闭</param>
public void CDDriver(bool open)
{
if (open)
mciSendString("set cdaudio door open", null, 0, IntPtr.Zero);
else
mciSendString("set cdaudio door closed", null, 0, IntPtr.Zero);
}
} /// <summary>
/// 显示器操作枚举
/// </summary>
public enum MonitorPowerType
{
/// <summary>
/// 打开显示器
/// </summary>
POWER_ON = -1,
/// <summary>
/// 进入省电状态
/// </summary>
POWER_SAVE = 1,
/// <summary>
/// 关闭显示器
/// </summary>
POWER_OFF = 2
} /// <summary>
/// 系统操作枚举
/// </summary>
public enum ExitWindowsType
{
/// <summary>
/// 注销windows
/// </summary>
Exit,
/// <summary>
/// 关机
/// </summary>
Off,
/// <summary>
/// 重启系统
/// </summary>
Restart
}

自己在网上查阅的所需资源整理后封装成的windows系统操作类,测试全通过,放心使用。

windows系统操作类和演示程序(关机,关闭显示器,打开屏幕保护程序,打开光驱等)的更多相关文章

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

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

  2. windows屏幕保护程序opengl模板

    Visual Studio 2013 屏幕保护程序opengl模板 ScreenSaver.cpp #define VC_EXTRALEAN #include <windows.h> #i ...

  3. Windows系统操作指令汇总

    CMD命令:开始->运行->键入cmd或command(在命令行里可以看到系统版本.文件系统版本) 1. appwiz.cpl:程序和功能 2. calc:启动计算器 3. certmgr ...

  4. windows系统操作

    1.怎么更新补丁 有些软件的运行需要windows要安装相关的补丁,除了去微软官网下载补丁外,可以用windows自带的“系统更新”来完成,省去找补丁下载以及研究系统缺少哪些补丁. 控制面板--> ...

  5. Windows系统批处理命令实现计划关机

    操作步骤: 1.新建一个文本文件,粘贴下面代码,保存为shutdown.bat @echo off echo 请输入延迟关机分钟数 echo 小于1分钟将视为立即关机,负数为取消关机 set /p t ...

  6. 【日常小问题】windows系统操作技巧

    如何将文件夹视图设置为“详细信息” @2015.3.30 这段时间刚换了电脑,资源管理器视图模式为“大图标”,很不符合俺的操作习惯.修改之—— 1.打开一个文件夹,设置为详细信息显示. 2.点击工具- ...

  7. windows系统中Dotnet core runtime 安装后,无法启动次程序,因为计算机中丢失api-ms-win-crt-runtime-l1-1-0.dll的解决方法

    因为dotnet core runtime依赖vc++2015,如果系统未安装vc++2015则会报上面的错误 解决方案:先下载安装vc++2015再安装dotnet core runtime, vc ...

  8. windows系统下.NET CORE c# 通过bat脚本发布iis应用程序,半智能点击式ci/cd

    这里以git为例子讲解: 第一个 pullCode.bat 文件是 拉取代码 git pull 第二个 publish.bat 脚本,编译代码,并发布指定文件夹 dotnet publish &quo ...

  9. Windows 屏幕保护程序

    { 创建一个win32 窗口项目,不是控制台的 把exe改为src文件 复制到windows目录下 ok }

随机推荐

  1. mysql timestamp 值不合法问题

    Create Table: CREATE TABLE `RecruitmentDesc` ( `sn` int(11) NOT NULL AUTO_INCREMENT COMMENT '编号(自增字段 ...

  2. 柯南君:看大数据时代下的IT架构(6)消息队列之RabbitMQ--案例(Publish/Subscribe起航)

    二.Publish/Subscribe(发布/订阅)(using the Java Client) 为了说明这个模式,我们将构建一个简单的日志系统.它将包括两个项目: 第一个将发出日志消息 第二个将接 ...

  3. HTML系列(六):划分文档结构

    常见的网页结构布局是酱紫的,真是美美哒^O^: 一.添加基本标题h1~h6(没什么好说的): 二.标题分组hgroup <hgroup>用来将标题和子标题进行分组.如果一篇文章articl ...

  4. HTML系列(四):编辑图像

    一.图像的基本概念 1.矢量图:文件占用空间小,放大后图像不会失真,和分辨率无关.适用于图形设计.文字设计.标志设计.版式设计等. 2.位图:由像素点组成,文件较大,放大和缩小图像会失真. 3.有损压 ...

  5. HTML5增加的几个新的标签

    HTML5又2008年诞生,HTML5大致可以等同于=html+css3+javascriptapi.... so --->支持css3强大的选择器和动画以及javascript的新的函数 先来 ...

  6. text选中后displa出label内容

    效果很好而且很简单 用text的click属性即可 private sub text1_click()label1.caption="******"label2.caption=& ...

  7. Web数据库的UI框架 Evolutility

    Evolutility 这个框架通过一个XML文件的定义,能够为一个数据对象(数据库中的一张表)来自动生成List,View,Edit,Delete,Search,Advance Search等视图, ...

  8. 2014.9.3数据库CRUD

    CRUD 增删改查 DCL 数据控制语言:备份,grant DML 数据操作语言: CRUD DDL 数据定义语言:create drop alter 自增长列不能赋值 增: Insert into  ...

  9. 成功的背后!(给所有IT人)----转载:来自CSDN第一名博主

    转载:来自CSDN第一名博主:http://blog.csdn.net/phphot/article/details/2187505 放在这里激励你我! 正文: 成功的背后,有着许多不为人知的故事,而 ...

  10. SQL Server 大数据量批量插入

    private void AddShuJu_Click(object sender, RoutedEventArgs e) { Stopwatch wath = new Stopwatch(); wa ...