版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/bjbz_cxy/article/details/82254137
下面介绍几种在Windows编程中关闭Windows的几种方式
首先介绍一个API
ExitWindowsEx
这个API是WIndows下为开发人员提供的对操作系统睡眠的几种方式
API介绍:
函数原型:
BOOL ExitWindowsEx(
UINT uFlags, // 关闭参数
DWORD dwReserved // 系统保留,一般取0
);
参数介绍:
uFlags
指定关闭的类型。此参数必须有下列值的组合:
EWX_FORCE
强制终止进程。当此标志设置,Windows不会发送消息WM_QUERYENDSESSION和WM_ENDSESSION的消息给目前在系统中运行的程序。这可能会导致应用程序丢失数据。因此,你应该只在紧急情况下使用此标志。
EWX_LOGOFF
关闭所有进程,然后注销用户。
EWX_POWEROFF
关闭系统并关闭电源。该系统必须支持断电。
Windows要求:
Windows NT中调用进程必须有 SE_SHUTDOWN_NAME 特权。
Windows 9X中:可以直接调用。
EWX_REBOOT
关闭系统,然后重新启动系统。
Windows要求:
Windows NT中:调用进程必须有SE_SHUTDOWN_NAME特权。
Windows 9X中:可以直接调用。
EWX_SHUTDOWN
关闭系统,安全地关闭电源。所有文件缓冲区已经刷新到磁盘上,所有正在运行的进程已经停止。
Windows要求:
Windows NT中:调用进程必须有SE_SHUTDOWN_NAME特权。
Windows 9X中:可以直接调用。
dwReserved
系统保留,这参数被忽略。一般取0。
返回值
如果函数成功,返回值为非零。
如果函数失败,返回值是零。想获得更多错误信息,请调用GetLastError函数。
1.注销
非常简单使用EWX_LOGOFF即可
ExitWindowsEx(EWX_LOGOFF,0);//注销当前用户
强制注销:
只需要将EWX_FORCE利用或运算符即可
ExitWindowsEx(EWX_FORCE|EWX_LOGOFF,0);//强制注销当前用户
2.重启
ExitWindowsEx(EWX_REBOOT, 0); //重启
强制重启
ExitWindowsEx(EWX_FORCE|EWX_REBOOT, 0); //强制重启
3.关机
//此步骤需要提权,提权方法请参考我的其它文章
ExitWindowsEx(EWX_SHUTDOWN, 0); //关闭系统
强制关机
ExitWindowsEx((EWX_FORCE|EWX_SHUTDOWN, 0); //关闭系统
4.关闭电源
此步骤需要设备以及操作系统支持,和笔记本的关闭按钮一样,切断电源
ExitWindowsEx(EWX_POWEROFF, 0); //关闭系统并关闭电源
强制切断电源
ExitWindowsEx(EWX_FORCE|EWX_POWEROFF, 0); //强制关闭系统,并关闭电源