[英]how to force shutdown computer using cpp program
我一直在做一个小项目。 我正在为我弟弟的电脑做一个计时器,这样他一天使用电脑的时间就不会超过我设定的时间。 我在代码中面临的问题是我尝试了一堆系统命令来自动关闭计算机,但是当它运行命令时,它要求关闭正在运行的应用程序。 但我想强制关闭所有正在运行的应用程序。 下面是我正在尝试的代码,但它不是很有效
system("C:\\Windows\\System32\\shutdown /s /t 0");
现在该语句在执行时要求关闭正在运行的应用程序或取消关闭过程
ExitWindowsEx(EWX_SHUTDOWN | EWX_FORCE,
SHTDN_REASON_MAJOR_OPERATINGSYSTEM |
SHTDN_REASON_MINOR_UPGRADE |
SHTDN_REASON_FLAG_PLANNED);
我从 Microsoft 文档中得到了高于 function 的信息,但它在我的计算机中不起作用,即使它在此语句中没有显示任何错误。 但即使在执行后它也不起作用。 此外,Visual Studio 提出了使用新的 API 的建议,如下所示
InitiateSystemShutdownEx(NULL, NULL, 0, true, false, SHTDN_REASON_FLAG_USER_DEFINED);
即使被执行,这也不起作用。 我正在使用 windows 11。下面我给出了我到达的整个代码
#include <iostream>
#include <stdlib.h>
#include<Windows.h>
#include<fstream>
#pragma warning(disable : 4996)
#pragma comment(lib, "user32.lib")
#pragma comment(lib, "advapi32.lib")
using namespace std;
void timer()
{
int hours=0;
int minutes=0;
int seconds=0;
ofstream tim;
while (seconds != 5)
{
tim.open("time.txt", ios::out | ios::trunc);
seconds++;
Sleep(1000);
if (seconds == 60)
{
minutes++;
seconds = 0;
}
if (minutes == 60)
{
hours++;
minutes = 0;
}
tim << hours << endl << minutes << endl << seconds;
tim.close();
}
}
int main()
{
timer();
ExitWindowsEx(EWX_SHUTDOWN | EWX_FORCE,
SHTDN_REASON_MAJOR_OPERATINGSYSTEM |
SHTDN_REASON_MINOR_UPGRADE |
SHTDN_REASON_FLAG_PLANNED);
cout << endl << endl;
return 0;
}
所以请任何类型的帮助将不胜感激。
您需要添加/f
标志来强制关机。
这是我多年前在遇到类似问题时创建的实际注销 function。 那里有很多额外的代码来支持调试而无需注销自己,实际工作是调用ExitWindowsEx
。
void CTimeLimitApp::Logoff()
{
static bool bOff = false;
if (bOff)
return;
bOff = true;
#if _DEBUG
AfxMessageBox("Logoff!", MB_OK, 0);
PostQuitMessage(0);
#else
Sleep(1000);
ExitWindowsEx(EWX_LOGOFF | EWX_FORCE, 0);
#endif
}
如果要完全关闭,您可能需要以管理员身份运行程序。
但是这个解决方案对我有用,也希望对其他人有用,但@CodyGray 在评论中也有更好的解释方法......我也更喜欢看出来......这很好解释并且非常有用
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.