托盘程序的关机问题

davidye 2004-12-20 03:26:05
由于改写了closing事件,使得关闭缩小到托盘中。然后用下面的函数来检测关机消息,系统关机或重启的时候,发现程序是关闭了,但是系统无法继续执行关机命令,请问问题出在那里?
protected override void WndProc(ref Message m)
{
//int WM_QUERYENDSESSION = 0x0011;
int WM_ENDSESSION = 0x0016;
if (m.Msg == WM_ENDSESSION )
{
m.WParam = (IntPtr)0;
m.Result = (IntPtr)1;
this.Close();
notifyIconServer.Visible = false ;
notifyIconServer.Dispose();
Application.Exit(); }
base.WndProc (ref m);
}
...全文
197 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
JasonHeung 2005-02-05
  • 打赏
  • 举报
回复
简单的做法是,你先定义一个bool变量初始值为false。
在closing事件里,检查该变量,为false则最小化程序。为true则调用缺省方法然后什么也不做。
检测到关机消息,则置该变量为true.调用退出方法。
yiyi0518 2005-02-05
  • 打赏
  • 举报
回复
学习了~~~~
peterli1976 2005-02-03
  • 打赏
  • 举报
回复
hbxtlhx(最后一片绿叶) 是正确的,
不过每个你重写Cloing()的Form都需要这样一段代码就OK了.
toxyboy 2005-02-03
  • 打赏
  • 举报
回复
跟踪调试一下吗,或许是重载closing的问题。
北京的雾霾天 2004-12-20
  • 打赏
  • 举报
回复
不明白你什么意思.......
davidye 2004-12-20
  • 打赏
  • 举报
回复
因为closing函数已经改写了,base.WndProc (ref m) 是否还是调用closing函数呢?
北京的雾霾天 2004-12-20
  • 打赏
  • 举报
回复
没有了,我这里很正常就关闭了啊,我的代码只是提供给你一个思路,具体你可以再修改啊,我的实现如下是可以的:

protected override void WndProc(ref Message m)
{
int WM_ENDSESSION = 0x0016;
if (m.Msg == WM_ENDSESSION )
{
this.Close();
}
base.WndProc (ref m);
}
kong19 2004-12-20
  • 打赏
  • 举报
回复
up
davidye 2004-12-20
  • 打赏
  • 举报
回复
就是关闭过程中,当关闭完这个程序的时候,系统就不接着关闭别的程序或重启了。我想是后续的base.WndProc (ref m); 没有正确运行,但是不知道怎么来改
北京的雾霾天 2004-12-20
  • 打赏
  • 举报
回复
但是关机或重启进程也停止了

什么意思啊,重启还不让退出?
davidye 2004-12-20
  • 打赏
  • 举报
回复
是呀,程序是响应后关闭了,但是关机或重启进程也停止了
北京的雾霾天 2004-12-20
  • 打赏
  • 举报
回复
你的问题没有解决吗?

http://community.csdn.net/Expert/topic/3660/3660191.xml?temp=.8049127
北京的雾霾天 2004-12-20
  • 打赏
  • 举报
回复
今天好像回过这样一个帖子啊.......
北京的雾霾天 2004-12-20
  • 打赏
  • 举报
回复
参见如下的代码,也就是在WndProc里由得到的消息是否是系统关闭或注销时来关闭当前的应用程序:

protected override void WndProc(ref Message m)
{
//int WM_QUERYENDSESSION = 0x0011;
int WM_ENDSESSION = 0x0016;
if (m.Msg == WM_ENDSESSION )
{
MessageBox.Show("系统关闭");
m.WParam = (IntPtr)0;
//m.Result = (IntPtr)1;
//this.Close();
}
base.WndProc (ref m);
}

110,537

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧