win10家庭版— 专业的win10家庭版系统下载及资源分享平台

雨林木风 深度技术 萝卜家园 番茄花园 电脑公司

当前位置主页 > Win10家庭版教程 >

阻止w7系统关机 确定强制关机才可以关

时间:2016-11-29 08:10来源: 本站整理

 从Vista开始,想阻止系统关机就开始变麻烦了,不能只拦截WM_QUERYENDSESSION了,操作系统只给一个应用程序两秒钟的时间去保存自己的东西,两秒钟之后,不管做完了没有,Game Over!可是如果你正在刻录一张光盘呢?两秒钟是都不够的,所以Vista之后也给提供了一种方式阻止系统关机,就是ShutdownBlockReasonCreate函数,只要调用这个函数,第一个参数传递创建主窗口的句柄,第二个参数传递一个字符串,这个字符串说明阻止关机的原因,将会显示给用户。而且msdn提示说这个API函数只能由创建主窗口的线程调用,否则将返回ERROR_ACCESS_DENIED。而且完成后还得调用ShutdownBlockReasonDestroy函数使系统关机能够继续进行,参数只传递上面那个窗口的句柄就可以了。

  下面这段代码就是完整实现,不能使用VS2005编译,因为自带的库还没有这俩函数,我是使用VS2010编译的,工程文件和可执行文件的下载地址在文章最下方。

  1 #include <windows.h>
  2 #include <tchar.h>
  3 #include "resource.h"
  4 
  5 //标记是否已经阻止关机,默认为未阻止
  6 BOOL blockedFlag = FALSE;
  7 
  8 //这俩函数纯粹是撒娇,为了突出它们才拿出来改个名的
  9 BOOL BlockShutdown(HWND hwnd)
 10 {
 11     if (ShutdownBlockReasonCreate(hwnd, _T("不准关机!除非你点强制关机 :-(")))
 12     {
 13         return TRUE;
 14     }
 15     return FALSE;
 16 }
 17 
 18 BOOL UnblockShutdown(HWND hwnd)
 19 {
 20     if (ShutdownBlockReasonDestroy(hwnd))
 21     {
 22         return TRUE;
 23     }
 24     return FALSE;
 25 }
 26 
 27 INT_PTR CALLBACK MainDialogProc(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lParam)

我要分享:

本站发布的win10家庭版系统与电脑软件仅为个人学习测试使用,请在下载后24小时内删除,不得用于任何商业用途,否则后果自负,请支持购买微软正版软件!

如侵犯到您的权益,请及时通知我们,我们会及时处理。

Copyright @ 2024 win10家庭版 xp6000.com