苏紫方璇 发表于 2019-1-14 14:12

【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;
}

苏紫方璇 发表于 2019-3-18 09:38

liuganglove2015 发表于 2019-3-17 13:13
一个DOS命令的事情。shutdown -s -t 3600就是三千六百秒后关机。shutdown -r -t 360 就是三百六十秒后重 ...

确实不需要这么麻烦,所以我帖子第一句就说了我是来水贴的,发帖的那几天,论坛到处都是发自动关机的,我也就是蹭个热度

飘零灬幻 发表于 2019-1-16 22:42

DL1755305997 发表于 2019-1-14 15:23
唉c真是博大精深啊   我是学单片机的C语言的   我居然看懂了

方便说下这是什么软件吗,刚开始学

wslans 发表于 2019-1-14 14:20

真水。。。

约定的童话 发表于 2019-1-14 14:45

貌似很强大啊,哈哈

保洁阿姨 发表于 2019-1-14 14:49

关机。。。又是关机,,厉害了呢

Xer0 发表于 2019-1-14 15:16

用了2个知识点吧   关机函数ExitWindowsEx提权函数RtlAdjustPrivilege

不过自动关机这种程序感觉有点重复造轮子
直接shutdown就完事了

DL1755305997 发表于 2019-1-14 15:23

唉c真是博大精深啊   我是学单片机的C语言的   我居然看懂了{:301_997:}

℡小疯、 发表于 2019-1-14 15:52

很羡慕你的技术,不过把关机这么简单一件事弄得这么麻烦

泰小海 发表于 2019-1-14 16:16

完了完了,论坛变了,不在是那个吾爱了,都是自动关机了

qaz003 发表于 2019-1-14 16:17

哈哈,不错。。
继续挖下去,搞个自定义参数的,可以设置几点几分的

smcree 发表于 2019-1-14 21:23

直接一个批处理更简单
页: [1] 2 3 4
查看完整版本: 【VC】C语言版自动关机