请教高手C#winForm程序退出问题?

zhanghongxing 2005-11-13 12:25:29
为了使用户点击关闭按钮不退出程序,我在Closing事件中加了不让退出的代码。运行可以了,但出现的问题是连windows关机也关不了。请教高手,怎么办,也想到了重载void DefWndProc(),但无效。不知windows关机时会对我的程序发什么消息?void DefWndProc()能拦截到吗?
...全文
708 17 打赏 收藏 转发到动态 举报
写回复
用AI写文章
17 条回复
切换为时间正序
请发表友善的回复…
发表回复
ICANNER 2010-06-11
  • 打赏
  • 举报
回复
,,,,,,,,,,,,,,,,,,,,,,,,,,,学习
charmgjj 2006-02-17
  • 打赏
  • 举报
回复
学习
zhanghongxing 2005-11-29
  • 打赏
  • 举报
回复
谢谢各位,但还是不成啊?请高手指教。分不够可再加!
zhanghongxing 2005-11-22
  • 打赏
  • 举报
回复
zhzou 你好:谢谢你的解答。 SystemEvents_SessionEnded 在我这里不认,需引用什么吗?
另外:protected override void WndProc(ref Message m) 收不到啊?

crystal1204 2005-11-15
  • 打赏
  • 举报
回复
学习!`
byst 2005-11-14
  • 打赏
  • 举报
回复
我有过类似的经历
我的解决方法是主窗口FormBorderStyle改成none
然后自己填加关闭按钮和方法
Ly_uu 2005-11-14
  • 打赏
  • 举报
回复
值得学习一下~~~~
chaircat 2005-11-14
  • 打赏
  • 举报
回复
Windows在(非强制)关机的时候会向每个程序发送(SendMessage)关闭消息,好像就是WM_QUERYENDSESSION吧...忘记了...-_-!
只有全部SendMessage返回True,也就是所有程序正常关闭windows才会关机...
dragonfly001 2005-11-14
  • 打赏
  • 举报
回复
你Close事件代码是什么??????
marvelstack 2005-11-14
  • 打赏
  • 举报
回复
更多,
http://blog.csdn.net/zhzuo/archive/2005/04/14/347712.aspx
marvelstack 2005-11-14
  • 打赏
  • 举报
回复
使用SystemEvent类
注册
SystemEvents.SessionEnded += new SessionEndedEventHandler(SystemEvents_SessionEnded);

//事件处理程序
private static void SystemEvents_SessionEnded(object sender, SessionEndedEventArgs e)
{
//去掉事件注册,
formMain.Closing -= new System.ComponentModel.CancelEventHandler(this.FormMain_Closing);
Application.Exit();//调用关闭程序.
//Environment.Exit(0);

}
levinknight 2005-11-13
  • 打赏
  • 举报
回复
就是你没有处理好 WM_QUERYENDSESSION 这个消息,所以才关不了机
fsvbboy 2005-11-13
  • 打赏
  • 举报
回复
你不要程序关闭,那你的关闭按钮有什么作用呢,不懂?
saucer 2005-11-13
  • 打赏
  • 举报
回复
not sure if your GUI design choice is correct, but try to respond to WM_QUERYENDSESSION message, something like

protected override void WndProc(ref Message m)
{
if(m.Msg==0x0011) //WM_QUERYENDSESSION
{
mainForm.shutDown = true;
Trace.WriteLine("Shutting Down - TrayIcon WndProc");
mainForm.Show();
MessageBox.Show("You must close System5 Logger before shutting down");
}
else if(m.Msg==0x0016) //WM_ENDSESSION
{
mainForm.shutDown = true;
Trace.WriteLine("Shutting Down 2 - TrayIcon WndProc");
}
else
base.WndProc(ref m);
}

see
http://groups.google.com/group/microsoft.public.dotnet.languages.csharp/msg/4425515586a543c4?hl=en&
zhy0101 2005-11-13
  • 打赏
  • 举报
回复
什么代码这么厉害,Windows都不能关机?
redwolf_123 2005-11-13
  • 打赏
  • 举报
回复
你Close事件代码是什么。。。
不想退出的话你只让界面隐藏就可以了啊。。(考虑加个最小化到右下)

free_xixi 2005-11-13
  • 打赏
  • 举报
回复
关注

110,530

社区成员

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

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

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