程序启动后自动最小化到系统托盘,同时开线程监听socket,当用户关闭计算机时,系统无反映,只有退出程序才能关闭系统,请问怎样才能使程

ahking 2007-01-17 05:39:29
程序启动后自动最小化到系统托盘,同时开线程监听socket,当用户关闭计算机时,系统无反映,只有退出程序才能关闭系统,请问怎样才能使程序不影响系统关闭啊?
...全文
1192 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
pen288 2007-01-29
  • 打赏
  • 举报
回复
能不能讲的细一下,谢
wdy9927 2007-01-18
  • 打赏
  • 举报
回复
up
ahking 2007-01-18
  • 打赏
  • 举报
回复
??
ahking 2007-01-18
  • 打赏
  • 举报
回复
up
ahking 2007-01-18
  • 打赏
  • 举报
回复
我重写了该方法,但是非常奇怪,先退出就可以关闭系统,直接关闭就是不行:
protected override void WndProc(ref Message m)
{
if (m.Msg ==0x0011)
{
ct();
}
else
base.WndProc (ref m);
}

关闭代码ct是一样的!
jwx007 2007-01-18
  • 打赏
  • 举报
回复
重载onclosing事件就可以了。我原来遇到过这个问题。
protected override void OnClosing(CancelEventArgs e)
{
if (this.WindowState ==FormWindowState.Normal )
{
// 最小化,并且隐藏窗体
//MessageBox.Show ("ok1");
e.Cancel =true;
this.WindowState = FormWindowState.Minimized;
this.TopMost =false;
this.ShowInTaskbar =false;
this.Hide();
}
else
{
this.Show();
this.TopMost =true;
this.ShowInTaskbar =true;
this.WindowState =FormWindowState.Normal ;
timer1.Stop ();
timer2.Stop ();
notifyIcon1.Icon =null;
notifyIcon1.Visible =false;
Application.Exit ();
}

}
北京的雾霾天 2007-01-18
  • 打赏
  • 举报
回复
就是重写WndProc接收系统结束的消息并关闭当前程序.
这样Windows系统才能很好的关闭.
这是老问题了.
cmHua 2007-01-18
  • 打赏
  • 举报
回复
m
withstudy 2007-01-18
  • 打赏
  • 举报
回复
你肯定是改写了FORM_CLOSE事件.当遇到的时候只是将窗体最小化了.所以才会出现关闭不了的情况..这种情况我遇见过..你在判断窗体关闭事件的时候还要判断一下关闭事件的原因.有两种.一个是用户关闭.一个是系统关闭..如果是用户关闭的话..你就最小化..如果不是..就退出程序..这样程序就可以退出..系统关机也可以完成了..
teacher1998 2007-01-17
  • 打赏
  • 举报
回复
up
jx0797 2007-01-17
  • 打赏
  • 举报
回复
重写WndProc(ref Message Msg)方法,收到系统关闭消息,就关闭程序。

110,570

社区成员

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

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

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