RT,办公室有一台老电脑,开机后的声音像拖拉机,被用作解密电脑了,每次用完有些人不会自觉关闭电脑,我又在这个电脑附近做,不胜其扰,受不了的时候就跑去关机,一天要关好几次,大佬们有没有支持“开机启动+每次开机一定时间内关机”的软件推荐?
写个定期关机脚本,扔到开机启动,应该能行
随便弄个程序检测鼠标超过30分钟没有活动就关机不就行了,你需要的话我给你写出来 几行代码就完事了,,,,
按道理说休眠更好啊,把鼠标唤醒给关了,只能键盘唤醒,三五分钟自动休眠,这样呢思考![]()
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 个赞
- zTasker
- 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++可能是指定参数那一套。