c# winform中怎么截获处理windows关闭的消息
有没有个专家给条名路?
有没有个专家给条名路?
解决方案 »
- byte[] 多线程同步
- js 操作ActiveXObject 导入word的问题
- 【关于c#ToBase64String加密上传图片】在线等。。。。。。
- c#转义字符问题
- c# 如何读取数据库中相应的值,在把登录情况保存到某表中?
- 序列化和反序列化存储一个List类型的对象的问题,请教了
- 关于单例处理后类与纯静态方法类的性能问题?
- c#程序随电脑自动启动后出现的奇怪的问题?求指教!
- 请问c#里哪个函数的功能象 VBScript 的 split,ubound 函数来分割字符串的??
- 对上次发帖的说明,并再次送分,以谢大家的帮助
- 在打开的文件中如何清空文件内容
- 我的客户端程序需要连接DB2,Oracle
Microsoft.Win32.SystemEvents.SessionEnding
{
if (m.Msg == 0x11)//WM_QUERYENDSESSION
{
}
else if (m.Msg == 0x16)//WM_ENDSESSION
{
}
base.WndProc(ref m);
}
{
public bool PreFilterMessage(ref System.Windows.Forms.Message mm)
{
if(mm.Msg>=512&&mm.Msg<=515)
{return true;}
return false;
}
private void Form1_Closing(object sender, System.ComponentModel.CancelEventArgs e)
{
}private void Form1_Load(object sender, System.EventArgs e)
{
Application.AddMessageFilter(this);
}
}
2、Closed : 关闭窗体后发生。
lz可以看看msdn,上面有详细解释。
但你并不能阻止windows 关闭
protected override void WndProc(ref Message m)
{
if (m.Msg == 0x11)//WM_QUERYENDSESSION
{
m.Result = (IntPtr)0;//0不关闭程序和系统;1关闭程序及系统
return;
}
else if (m.Msg == 0x16)//WM_ENDSESSION
{
}
base.WndProc(ref m);
}
另外,可以用Closeing事件,事件里的参数e有个Cancel,当e.Cancel=true的时候也会不关闭程序及系统(或注销)
要想阻止windows关闭,只能使用API
---------------
要想阻止windows关闭,只能使用API?
这句话不对吧...
private const int WM_QUERYENDSESSION=0x0011;
protected override void WndProc(ref Message m)
{
int i=0;
switch(m.Msg)
{
case WM_QUERYENDSESSION:
m.Result=(IntPtr)i;
break;
default:
base.WndProc(ref m);
break;
}
}
---------------------------------
当然你关了电源就没办法阻止了,不过还是可以在关机前保存数据的(在case WM_QUERYENDSESSION:处添加代码就行了)
我要做得就是在关机前处理稍微一下,保存一下数据,然后退出系统