系统不能关机或注销,请教!!!
我用VB.NET写了一个有托盘图标的程序,当点击窗体的关闭按钮时也是使窗口最小化,并且不在任务栏上显示图标,通过点击托盘图标可使窗口状态交替变换,这些是我模仿金山词霸的.
现在的问题是当窗口最小化时,即只有托盘图标时,将使系统不能注销或关机,只有手动退出程序后才行.我想象金山词霸那样,不用手动而是接到消息后自动退出程序,该怎么样做呢?
[解决办法]
不知道你有没有定义系统快捷键,或者你的程序过滤了关机的消息.
[解决办法]
如果你使用.NET 2.0 的话, 改用 Form.FormClosing 事件
这个事件使用FormClosingEventArgs ,提供了 Cancel 和 CloseReason,CloseReason是一个枚举,表示关闭 原因,有一下这些值
ApplicationExitCall Application 类的 Exit 方法被调用。
FormOwnerClosing 所有者窗体正在关闭。
MdiFormClosing 此多文档界面 (MDI) 窗体的父窗体正在关闭。
None 关闭原因未定义或者无法确定。
TaskManagerClosing Microsoft Windows 任务管理器正在关闭应用程序。
UserClosing 用户正在通过用户界面 (UI) 关闭该窗体,例如通过单击窗体窗口上的“关闭”按钮,通过选择窗口控制菜单上的“关闭”按钮,或者通过按 Alt+F4 等方式关闭。
WindowsShutDown 操作系统正在关闭所有应用程序以便准备关机。
因为都处理了, 所以无法关机和注销吧
[解决办法]
终于解决了~~加一个判断 关闭事件时判断窗体状态
private void Form1_Closing(object sender, System.ComponentModel.CancelEventArgs e)
{
if (this.WindowState==FormWindowState.Normal||this.WindowState==FormWindowState.Maximized)
{
MinShowForm();
e.Cancel = true;
}
else
{
e.Cancel=false;
}
}
托盘的关闭事件用
private void notifyIcon1_DoubleClick(object sender, System.EventArgs e)
{
if (MessageBox.Show("确认退出本系统?","退出询问",MessageBoxButtons.YesNo,MessageBoxIcon.Question )== DialogResult.Yes)
{
allowExit = true;
Application.Exit();
}
}
为了方便这里用的托盘图标双击关闭程序```可以把代码加加到托盘的其他事件里
这样就算电脑关闭时程序的界面是显示的 但在接受到电脑关闭命令会最小化到托盘 然后再关闭程序
这样电脑就能关闭了!