用c#.NET做的托盘程序,在关机时由于该托盘的存在,计算机不能关机或重起。谁知道是什么原因?如何处理?

andrawsky 2006-10-29 03:16:31
#region 托盘控制函数
/// <summary>
/// 隐藏 Form
/// </summary>
public void HideApp()
{
this.WindowState = FormWindowState.Minimized;
this.notifyIcon_Com.Visible = true;
Hide();
}

/// <summary>
/// 显示 Form
/// </summary>
public void ShowApp()
{
Show();
this.Visible = true;
this.WindowState = FormWindowState.Normal;
//this.notifyIcon.Visible = false;
}

/// <summary>
///重载关闭事件
/// </summary>
/// <param name="e"></param>
protected override void OnClosing(CancelEventArgs e)
{

e.Cancel = true;
HideApp();
}
/// <summary>
/// 退出函数
/// </summary>
private void ExitApp()
{
if (ISCommunicate == true)
{
ECMS.ControlHelper.ECSMessage.Show(MesType.Warning, "通信的过程中不能退出通信程序!");
return;
}
notifyIcon_Com.Visible = false;
base.Dispose();
notifyIcon_Com.Dispose();
System.Diagnostics.Process.GetCurrentProcess().Kill();
Application.ExitThread();
Application.Exit();
}
/// <summary>
/// Form大小改变事件
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void Form1_SizeChanged(object sender, System.EventArgs e)
{
if (this.WindowState == FormWindowState.Minimized)
{
HideApp();
}
}
private void KillXSTCOM()
{
System.Diagnostics.Process[] ps = System.Diagnostics.Process.GetProcesses();
foreach (System.Diagnostics.Process p in ps)
{
if (p.ProcessName.ToLower() == "Moons.ECMS.XSTComm".ToLower())
{
p.Kill();

}
}

}

#endregion
...全文
573 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
wepwep 2006-12-22
  • 打赏
  • 举报
回复
e.Cancel = true;////这个的问题
HideApp();
改为
if(this.visible)
{
e.Cancel = true;////这个的问题
HideApp();
}
copico 2006-12-22
  • 打赏
  • 举报
回复
直接拔掉电源
北京的雾霾天 2006-12-22
  • 打赏
  • 举报
回复
如果是VS2005的话有如下几个事件,在这几个事件里关闭当前程序就行了:
Microsoft.Win32.SystemEvents.SessionEnded;//当用户注销或关闭系统时发生。
Microsoft.Win32.SystemEvents.SessionEnding; //当用户试图注销或关闭系统时发生。
Microsoft.Win32.SystemEvents.SessionSwitch;//更改当前登录的用户时发生

如果是以前的版本,那么在WndProc函数中处理关机消息并关闭本程序.
lizhizhe2000 2006-12-22
  • 打赏
  • 举报
回复
在你的程序中对关机事件进行响应,自己先把自己关了
andrawsky 2006-12-22
  • 打赏
  • 举报
回复
如何解决
zhangabo 2006-11-05
  • 打赏
  • 举报
回复
重载了OnClosing事件也没用,退出还是需要确认,还是不能关机,重启。。。
股神 2006-10-31
  • 打赏
  • 举报
回复
up
zlkingdom 2006-10-30
  • 打赏
  • 举报
回复
不至于不能关机吧?太强了
YYGui 2006-10-30
  • 打赏
  • 举报
回复
````````
我也遇到类似问题``
LZ是不是运行了该程序之后WINDOWS里的
重启、关机、注销、锁定点了全没用???
andrawsky 2006-10-30
  • 打赏
  • 举报
回复
请问怎么解决啊?
-过客- 2006-10-29
  • 打赏
  • 举报
回复
mark
---涛声依旧--- 2006-10-29
  • 打赏
  • 举报
回复
學習﹐幫樓主頂一下
bys_home 2006-10-29
  • 打赏
  • 举报
回复
/// <summary>
///重载关闭事件
/// </summary>
/// <param name="e"></param>
protected override void OnClosing(CancelEventArgs e)
{

e.Cancel = true;////这个的问题
HideApp();
}
zhangabo 2006-10-29
  • 打赏
  • 举报
回复
我也有类似问题,我的程序关闭是需要确认的。现在关机的时候也总是出来确认,不确认就不能关机,如何才能在关机的时候不出确认,程序直接退出。

110,537

社区成员

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

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

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