我在自己的程序里重载了ON_WM_QUERYENDSESSION与ON_WM_ENDSESSION,并在自己的这两个函数直接返回FALSE可是并不能拦截系统的注销,甚至都没有询问,直接就被结束了后来我加入SetProcessShutdownParameters(1279,0);仍然不能停止注销,,还是被瞬间关闭了。。请问兄弟们,应该如何是好??我的系统是WIN7。注册表内的AutoEndTasks是0。谢谢

解决方案 »

  1.   

    我不想hook系统函数,就想处理系统消息的方式来实现我觉得应该是可以的吧,在网上看到过VB或者是C#的,没有试验能否成功但是VC中吃不掉这个消息啊注:是可以收到这个消息的,因为我自己的这两个函数内放了MSGBOX,都可以弹出但是弹出以后依然是注销或者关机
      

  2.   

    Win7不知道,但是上面的方法应该是可行的。
      

  3.   

    ON_WM_QUERYENDSESSION{
    MSGBOX("注销我弄死你啊!");
    }
    SetProcessShutdownParameters(1279,0);
    MSGBOX("注销失败!");
      

  4.   

    http://blog.csdn.net/syf442/archive/2009/07/28/4387431.aspx
      

  5.   

    MFC程序里确实是不行,在SDK程序里能正常阻止注销。
      

  6.   

    win7下xp下有些区别参看1.参看2.希望能解决你的问题。
      

  7.   

    MFC程序重载WindowProc()函数可以正常阻止注销。
      

  8.   

    望能祝兄弟一臂之力:
    http://wenda.tianya.cn/wenda/thread?tid=7635bdd37e95e09a
      

  9.   

    MFC程序里重载WindowProc函数能正常阻止注销,不知道还有没其他方法.LRESULT CMFCTestDlg::WindowProc(UINT message, WPARAM wParam, LPARAM lParam)
    {
    switch(message)
    {
    case WM_QUERYENDSESSION:
    return 0; default:
    break;
    } return CDialog::WindowProc(message, wParam, lParam);
    }
      

  10.   

    WIN7里不行的。不过VISTA以上的系统多了两个函数可以阻止关机所以你可以先判断系统,如果是VISTA以上,就用那两个函数,肯定没问题,不用拦截这个消息