【VC】C语言版自动关机
听说最近流行写自动关机,我也写一个水一贴#include <windows.h>
#include <stdio.h>
#define SeShutdownPrivilege 0x13
typedef int(__stdcall *PRtlAdjustPrivilege)(ULONG, BOOLEAN, BOOLEAN, PBOOLEAN);
BOOL fun;
DWORD WINAPI NewThread(LPVOID Lp)
{
DWORD Sec = (DWORD)Lp;
while (TRUE)
{
system("cls");
printf("距离自动关机还有%d秒\n", Sec--);
printf("按回车键取消自动关机\n");
Sleep(1000);
if (0==Sec)
{
if (fun)
ExitWindowsEx(EWX_POWEROFF, 0);
else
ExitWindowsEx(EWX_SHUTDOWN, 0);
break;
}
}
return 0;
}
int main()
{
DWORD Sec;
BOOLEAN enAbled = 0;
printf("请设置自动关机延时(秒):");
scanf("%d", &Sec);
getchar();
printf("请选择关机方式:1为快速关机,其他数字为安全关机:");
scanf("%d", &fun);
getchar();
if (1 == fun)
fun = TRUE;
else
fun = FALSE;
PRtlAdjustPrivilege RtlAdjustPrivilege =
(PRtlAdjustPrivilege)GetProcAddress(GetModuleHandle("ntdll"), "RtlAdjustPrivilege");
if (RtlAdjustPrivilege)
{
RtlAdjustPrivilege(SeShutdownPrivilege, TRUE, FALSE, &enAbled);
CreateThread(NULL, 0, NewThread, (LPVOID)Sec, 0, NULL);
}
getchar();
return 0;
} liuganglove2015 发表于 2019-3-17 13:13
一个DOS命令的事情。shutdown -s -t 3600就是三千六百秒后关机。shutdown -r -t 360 就是三百六十秒后重 ...
确实不需要这么麻烦,所以我帖子第一句就说了我是来水贴的,发帖的那几天,论坛到处都是发自动关机的,我也就是蹭个热度 DL1755305997 发表于 2019-1-14 15:23
唉c真是博大精深啊 我是学单片机的C语言的 我居然看懂了
方便说下这是什么软件吗,刚开始学 真水。。。 貌似很强大啊,哈哈 关机。。。又是关机,,厉害了呢 用了2个知识点吧 关机函数ExitWindowsEx提权函数RtlAdjustPrivilege
不过自动关机这种程序感觉有点重复造轮子
直接shutdown就完事了 唉c真是博大精深啊 我是学单片机的C语言的 我居然看懂了{:301_997:} 很羡慕你的技术,不过把关机这么简单一件事弄得这么麻烦 完了完了,论坛变了,不在是那个吾爱了,都是自动关机了 哈哈,不错。。
继续挖下去,搞个自定义参数的,可以设置几点几分的 直接一个批处理更简单