使用捕获的关机事件计划
药膳食疗 2021年09月06日 浏览:4 次
在公司上班,下班时需要签退,而我呢隔三差五就会忘那么一次。怎么办呢,于是就想能不能捕获windows的关机事件,做一个程序让它在关机的时候提醒我一下呢。 非常幸运很容易就找到了n32命名空间下面的SystemEvents类,他有一个静态的事件SessionEnding在系统注销或者关机时发生,此事件只有在winform的程序下有效,而在控制台程序下面无效,不能激发事件;还有一点我们必须在程序推出时将加上的事件移除掉,否则就容易造成内存溢出。
关键代码如下:
以下是引用片段:
using System;
using neric;
using rms;
using n32;
namespace Shutdown
{
static class Program
{
54 /**////
/// 应用程序的主入口点。
///
[STAThread]
static void Main()
{
ableVisualStyles();
tCompatibleTextRenderingDefault(false);
FormShutdown formShutdown = new FormShutdown();
ssionEnding += new SessionEndingEventHandler(stemEvents_SessionEnding);
n(formShutdown);
}
}
}Form 的代码:
using System;
using neric;
using ponentModel;
using ta;
using awing;
using xt;
using rms;
using n32;
namespace Shutdown
{
public partial class FormShutdown : Form
{
const string MESSAGE_TXT = \"您签退了吗?\";
const string MESSAGE_TITLE = \"提示\";
public FormShutdown()
{
InitializeComponent();
}
internal void SystemEvents_SessionEnding(object sender, SessionEndingEventArgs e)
{
DialogResult result = ow(MESSAGE_TXT, MESSAGE_TITLE, sNo);
ncel = (result == );
}
private void FormShutdown_Load(object sender, EventArgs e)
{
cation = new Point(dth - 200, 0);
}
protected override void OnClosed(EventArgs e)
{
ssionEnding -= new SessionEndingEventHandler(stemEvents_SessionEnding);
Closed(e);
}
}
}
此程序在使用c#2.0在Windows2003下测试通过。大家在使用ssionEnding事件时切记要在程序退出时移除事件。
不过有两点遗憾之处:
1. 使用这种方式不能捕获休眠时的事件
2. 这个程序占用的内存太多了,只有这么一个小功能居然占了12M的内存,这都是.Net framework惹的货;实在是不可思议。
大家有没有什么好主意可以克服这两个缺点呢?
成都哪里能治疗癫痫郑州白癜风专业医院
武汉治疗妇科习惯性流产医院

- 上一篇: 使用开发智能手机软件推箱子八物业
- 下一篇 使用来开发蓝牙通信模块覆盖
-
花絮波兰球迷助阵中国女排
2020-08-11
-
刮痧治疗肩周炎3
2019-07-16
-
厦门市中医院获得中医药管理局国际合作司中
2019-07-15
-
重庆市发布关于加强儿童中医医疗卫生服务能
2019-07-11
-
分析鸽子汤的养生价值
2019-07-11
-
鳄鱼肉是功效与作用
2019-07-07