使用自己写的小程序后电脑无法关机了!!!(急救!!!)最近我自己写了一个查杀U盘病毒的小软件,现在在电脑上使用,但是近几天突然电脑不能 关机、重启、注销了,点击这三个按钮后电脑自动退出了几个进程后就停了!后来我把我的小程序给关了,再试试关机等操作,完全恢复了正常,请问大家这是什么原因啊???同学的电脑用了我的这个小程序一段时间后电脑也不能关机等操作了!但是这个小软件只要运行着,电脑就不能正常的关机、重启、注销啊~~~谁能帮我找出这个原因啊???谁要这个小程序的源代码查看,请发邮件到 ,我把小程序发给你们!

解决方案 »

  1.   

    是不是用到托盘控件?
    拦截windows退出系统的消息、或者相应消息,然后处理你的事情。
    WMQueryEndSession
      

  2.   

    劳驾代码一并发过来吧,非常感谢~!
    [email protected]
      

  3.   

    你挂接了全局也就是系统级事件,你接管之后只对你关心的部分处理了,不关心的全部抛弃了,所以才会出现这样的情况。这种情况一般出现在你override的方法中。假如你override了A方法,代码应该这么写:
    public overrider void A(e)
    {
    //根据参数信息来判断,如果是你关心的,处理它,否则继续让上层处理
    if(e)
    {
    //字节处理的代码
    }
    else
    {
    base(e)
    }
    }
      

  4.   

    你的软件hook 过头了吧。检查代码啊 。
      

  5.   

    厉害,代码发过来,我看看,
    我现在认为是卡住了,不是关不了机
    另外你在看一下是不是用到托盘控件
    [email protected]这是我的邮箱
      

  6.   

    退出的时候弹框出来问是否关闭?
    .NET下托盘关机就是有问题···
      

  7.   

    同意,可能是把base(e)给屏蔽了。消息传不到上层去了
      

  8.   

    或者跟Timer控件有关....我怀疑是这两个玩意引起的....
    而且我这边并非所有机器都会出现这样的状况,有点诡异...
      

  9.   

    m_bexit导致FormClosing中的e.Cancel问题 呵呵 接分了
      

  10.   


        public partial class Form1 : Form
        {
            private bool exit;        //在FormClosing中加如下代码
            private void Form1_FormClosing(object sender, FormClosingEventArgs e)
            {
                if (e.CloseReason == CloseReason.UserClosing)
                {
                    if (!exit)
                    {
                        e.Cancel = true;
                    }
                }
            }        //在托盘控件的右键退出菜单中加如下代码
            private void quickMenuExit_Click(object sender, EventArgs e)
            {
                exit = true;
                this.Close();
            }
        }
      

  11.   

    [email protected]
     给我个看看,我来改改
      

  12.   

    估计lz在Form的Closing事件里写e.Cancel=True了。这样可以做到点击关闭按钮时隐藏到托盘。
    void Form_Closing(object sender, FormClosingEventArgs e)
    {
       if(this.Visible)
           e.Cancel = true;
    }
      

  13.   

    e.Cancel = true;
    MS NB  BUG