C#之关机事件

一、背景

  做了个APP,通过向下位机发送串口数据,然后通过开关机去控制多路光源,现在的问题来了,若是电脑强行关机,而APP又没在电脑关机前做任何动作,导致电脑关机了,而下位机控制的灯源还在工作。所以需要C#在截获到关机信息时发送串口数据通知下位机关闭灯源。

二、正文

  在“Form1.cs[设计]”界面下,选中要截获关机信息的窗体。(所写的APP只有一个窗体,所以没有父子窗体概念。)在右下角的属性框点击“事件”,并选中“FormClosing”,如下图:

    

  双击会在“Form1.cs”中生成如下代码:

  

private void VOUTCTRL_FormClosing(object sender, FormClosingEventArgs e)
{
    // 在该函数内做窗口关闭前要做的操作。
    // 以下代码为自行添加部分

    switch (e.CloseReason)
    {
        case CloseReason.ApplicationExitCall:
            MessageBox.Show("Exit()方法被调用!");
            break;
        case CloseReason.FormOwnerClosing:
            MessageBox.Show("所有者窗体正在关闭!");
            break;
        case CloseReason.MdiFormClosing:
            MessageBox.Show("此多文档界面 (MDI) 窗体的父窗体正在关闭!");
            break;
        case CloseReason.None:
            MessageBox.Show("关闭原因未定义或者无法确定!");
            break;
        case CloseReason.TaskManagerClosing:
            MessageBox.Show("任务管理器正在关闭应用程序!");
            break;
        case CloseReason.UserClosing:
                e.Cancel = true;
            MessageBox.Show("用户正在通过用户界面 (UI) 关闭该窗体!");
            break;
        case CloseReason.WindowsShutDown:
            MessageBox.Show("操作系统正在关闭所有应用程序以便准备关机!");
            break;
        default:
            break;
    }
}

  该段代码在出现的以上“7”种事件后就会被调用。

三、参考文献 

  C#捕获windows关机事件,在系统关机前做一些自己想做的事

    http://blog.csdn.net/testcs_dn/article/details/42365381

至此,记录完毕。

记录时间:2016年11月17日

记录地点:深圳WZ

  

时间: 2024-12-28 18:13:55

C#之关机事件的相关文章

C#捕获windows关机事件,在系统关机前做一些自己想做的事

C#捕获windows关机事件,在系统关机前做一些自己想做的事: 有些时候我们可能想在Windows关机时记录或处理一些事情,这里提供几种方法. 方法一: /// <summary> /// 窗口过程的回调函数 /// </summary> /// <param name="m"></param> protected override void WndProc(ref Message m) { switch (m.Msg) { //此消息

WPF捕捉Windows关机事件

1 private const int SC_SCREENSAVE = 0xF140; 2 private const int WM_QUERYENDSESSION = 0x0011; 3 private bool IsScreenSave = false; 4 private bool IsWindowStopClosing = false; 变量 不废话,直接贴代码,构造函数中 public XX{ 1 // 获得窗口句柄 2 IntPtr hwnd = new WindowInteropH

Windows Server 取消关机事件跟踪

Windows Registry Editor Version 5.00 [HKEY_LOCAL_MACHINE\SOFTWARE\PolicIEs\Microsoft\Windows NT\Reliability] "ShutdownReasonOn"=dword:00000000"ShutdownReasonUI"=dword:00000000 Windows Server 取消关机事件跟踪

网络攻防任务二:开机、关机事件触发账户的创建与删除

一.任务要求 设计一个以开机.关机事件为触发条件的计划任务,实现: 1.开机时新建一个用户 2.关机时删除用户 二.解决步骤 (一)实验环境搭建 事件触发的命令是schtasks. 利用schtasks完成的功能主要是:利用确定的日志事件触发net user命令,以达到新增一个管理员账户的目的. 如果利用传统的at命令,首先无法用日志事件触发,其次需要执行多条命令行时,只能将它们编写成.bat的批处理文件进行处理. 由于要用到事件触发,xp没有这个功能,所以要新建一个win7的虚拟机. Win7

windows服务器中关闭事件跟踪器的方法

关闭系统事件跟踪程序 WindowsServer 2003加入了关机事件跟踪的新特性,每次关机时要询问关闭原因,以详细记录服务器关闭原因用于以后故障排除备用.对于服务器来说这是必要的选择,但对于个人用户却没什么大用,反而带来麻烦,所以我们可以禁止它. 单击"开始→运行",输入gpedit.msc,打开组策略编辑器.在左窗口中选择"计算机配置→管理模板→系统",在右边窗口双击"显示关闭事件跟踪程序",在出现的对话框中选择"已禁用"

WPF 程序检测 windows 关机

1.使用SessionEnding事件 参考MSDN. 2.在需要处理 关机事件中可以注册SessionEnding事件 App.Current.SessionEnding += Current_SessionEnding; private void Current_SessionEnding(object sender, SessionEndingCancelEventArgs e) { //处理一些事情 DoExit(); }

windows server 2003 禁止开机显示“关闭事件跟踪”

关机事件跟踪(Shutdown   Event   Tracker)也是Windows   server   2003区别于其他工作站系统的一个设置,对于服务器来说这是一个必要的选择,但是对于工作站系统却没什么用,我们同样可以禁止它.   打开”开始“Start   -> ”运行“   Run   -> 输入”gpedit.msc   “,在出现的窗口的左边部分,选择   ”计算机配置“(Computer   Configuration   )->   ”管理模板“(Administra

捕获关机

C#捕获windows关机事件,在系统关机前做一些自己想做的事: 有些时候我们可能想在Windows关机时记录或处理一些事情,这里提供几种方法. 方法一: 1 /// <summary> 2 /// 窗口过程的回调函数 3 /// </summary> 4 ///<param name="m"> 5 protected override void WndProc(ref Message m) 6 { 7 switch (m.Msg) 8 { 9 //

android关机流程

关机过程的主要实现在ShutdownThread.java中在关机过程中,主要做了三件事:1.发送关机广播 有的模块可能需要监听手机关机事件,所以在关机时发送关机广播,通知相关模块处理.2.关闭一些主要服务进程 而在关机过程中为了不损坏手机性能,记录当前一些状态,需要将一些模块服务进程先关闭,然后才进行关机3.通过PowerManagerService调用底层进行关机 原文地址:https://www.cnblogs.com/lixiangfu/p/10400278.html