请问有没有支持“开机启动+每次开机一定时间内关机”的软件?

RT,办公室有一台老电脑,开机后的声音像拖拉机,被用作解密电脑了,每次用完有些人不会自觉关闭电脑,我又在这个电脑附近做,不胜其扰,受不了的时候就跑去关机,一天要关好几次,大佬们有没有支持“开机启动+每次开机一定时间内关机”的软件推荐?

写个定期关机脚本,扔到开机启动,应该能行

随便弄个程序检测鼠标超过30分钟没有活动就关机不就行了,你需要的话我给你写出来 几行代码就完事了,,,,

按道理说休眠更好啊,把鼠标唤醒给关了,只能键盘唤醒,三五分钟自动休眠,这样呢思考:thinking:

shutdown \s \t 3600

上面一行保存为bat文件,丢到启动目录,或者直接把命令添加到计划任务中。
3600秒后自动关机。

你倒是写啊

写好了

鼠标指针30分钟无活跃即关机,操作鼠标不影响使用,可添加至启动项。
安全无毒 实测win11可以正常执行

2 个赞

检测一段时间没有操作就关机的程序。下面是15分钟。

#include <iostream>
#include <Windows.h>
#pragma comment( linker, "/subsystem:\"windows\" /entry:\"mainCRTStartup\"") //隐藏窗口
int main(int argc, char** argv)
{
    uint64_t delay_seconds = 60*15; // 无操作 15 分钟后关机
    if (argc == 2) {
	sscanf_s(argv[1], "%llu", &delay_seconds);
    }
    char msg[256];
    sprintf_s(msg, "点击确认后,%llu 分钟无操作关机", delay_seconds / 60);
    MessageBoxA(NULL, msg, "启动成功", MB_OK);
    while (true) {
	// 获取当前键盘和鼠标的最后输入时间
	LASTINPUTINFO lii;
	lii.cbSize = sizeof(LASTINPUTINFO);
	GetLastInputInfo(&lii);
	DWORD currentInputTime = lii.dwTime;

	if (GetTickCount64() - currentInputTime > delay_seconds * 1000) {
	    
	    // 调用 InitiateShutdown 函数来关机
	    HANDLE hToken;
	    OpenProcessToken(GetCurrentProcess(), TOKEN_ADJUST_PRIVILEGES | TOKEN_QUERY, &hToken);

	    TOKEN_PRIVILEGES tkp;
	    LookupPrivilegeValue(NULL, SE_SHUTDOWN_NAME, &tkp.Privileges[0].Luid);

	    tkp.PrivilegeCount = 1;
	    tkp.Privileges[0].Attributes = SE_PRIVILEGE_ENABLED;

	    AdjustTokenPrivileges(hToken, FALSE, &tkp, 0, (PTOKEN_PRIVILEGES)NULL, 0);

	    InitiateShutdown(NULL, NULL, 0, SHUTDOWN_FORCE_OTHERS | SHUTDOWN_FORCE_SELF, SHTDN_REASON_FLAG_PLANNED);
	    Sleep(15000);
	    
	    // 避免上面失败,可以取消注释下面这行
	    // system("shutdown -s -t 5");

	    ExitProcess(0);
	}
	else if (GetTickCount64() - currentInputTime < delay_seconds * 1000) {
	    // 有操作
	}
	Sleep(1000);
    }
    return 0;
}
1 个赞
  1. zTasker
  2. shutter

歪一下楼,一直想问

#pragma comment( linker, "/subsystem:\"windows\" /entry:\"mainCRTStartup\"") //隐藏窗口

这玩意是不是只有target是MSVC的时候才能用,GNU就不行啊……GNU编译的始终还是用控制台窗口,很奇怪,手头又没有MSVC环境

千宇智能关机,能设置开机一定时间关机,也能设置鼠标空闲一定时间关机。
1.x版本最后是1.79,有发布过2.x beta,还能找到官网下载的版本是1.77。
http://www.ddeee.com/old/dl/qyzngj.zip

hhhhhhhhhhhhhhhhhh

是的, gcc 默认入口函数是 main ,指定 mainCRTStartup 大概没用

至于隐藏控制台窗口,有很多方法,搜一下就知道了

#pragma comment( linker, 这种应该是msvc编译器的拓展的语法。g++可能是指定参数那一套。