基本信息
源码名称:c语言定时关机 示例源码
源码大小:1.33KB
文件格式:.c
开发语言:C/C++
更新时间:2019-03-15
   友情提示:(无需注册或充值,赞助后即可获取资源下载链接)

     嘿,亲!知识可是无价之宝呢,但咱这精心整理的资料也耗费了不少心血呀。小小地破费一下,绝对物超所值哦!如有下载和支付问题,请联系我们QQ(微信同号):813200300

本次赞助数额为: 2 元 
   源码介绍


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