如何使用cpp程序强制关闭计算机



我一直在做一个小项目。我正在为我弟弟的电脑做一个计时器,这样他一天内就不能超过我设定的时间使用电脑了。我在代码中遇到的问题是,我尝试了一堆系统命令来自动关闭计算机,但当它运行该命令时,它会询问是否关闭正在运行的应用程序。但我想强制关闭所有正在运行的应用程序。下面是我正在尝试的代码,但它不太适用

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);

我从微软文档中得到了上面的函数,但它在我的计算机上不起作用,即使它在这个语句中没有显示任何错误。但即使在执行之后,它也不起作用。此外,visualstudio还提出了使用新的API的建议,该API在下面给出

InitiateSystemShutdownEx(NULL, NULL, 0, true, false, SHTDN_REASON_FLAG_USER_DEFINED);

即使执行了,这也不起作用。我用的是windows11。下面我给出了我到达的整个代码

#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标志来强制关闭。

这是我多年前遇到类似问题时创建的实际注销函数。有很多额外的代码可以在不注销的情况下支持调试,实际工作在对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
}

如果要完全关闭,您可能需要以管理员身份运行该程序。

相关内容

最新更新