关于windows7的一个关机小程序(控制台)
- 格式:docx
- 大小:70.02 KB
- 文档页数:11
[注意]:本代码围绕at和shutdown指令编写的程序,主要用于windows7的(倒计时/定时)关机操作(由于at指令被windows10弃用,所以windows10使用会受到很大的限制甚至无法使用)
打印的时候一些表示方式:
shutdown /s :关闭系统
shutdown /s /t 600 :开始倒计时600秒后关闭系统
15:00 shutdown /s :15:00后按默认方式关机
15:00 shutdown /s /t 600 :15:00提醒并开始倒计时600秒后关闭系统
本代码完全安全无病毒,若在进行设置(倒计时/定时)关机时,安全软件发出拦截警告,请允许运行
最后,本代码开放(在windows7关机小程序.cpp文件内),允许任意复制、粘贴、修改和发布。
以下是源代码(建议复制到*.cpp文件内查看)
#include"stdio.h"
#include "windows.h"
#include"string.h"
#include "stdlib.h"
#include"conio.h"
//int _System(const char * cmd, char *pRetMsg, intmsg_len);
int menu(char *opt);//主菜单函数 int menu1(); int menu2();
int main()
{
char opt[32]={0};
while(1)
{
menu1();
printf("1>---------------------------------------------------------------------------<1\n");
printf("1>请输入当前主菜单操作:");
fgets(opt,sizeof(opt),stdin);
opt[strlen(opt)-1]='\0';
printf("1>---------------------------------------------------------------------------<1\n");
if (strcmp(opt,"5")==0
||strcmp(opt,"离开")==0
||strcmp(opt,"Go away")==0)return 0;
menu(opt);
printf("\n");
system("pause");
system("cls");
}
return 0;
}
int menu(char *opt)//主菜单函数
{
if (strcmp(opt,"1")==0
||strcmp(opt,"取消本次关机")==0
||strcmp(opt,"Cancel this shutdown")==0)
{
system("shutdown -a");
return 1;
} if (strcmp(opt,"2")==0
||strcmp(opt,"设置关机")==0
||strcmp(opt,"Set off")==0)
{
char opt1[32]={0};
char sec[16]="/t ";
char mould1[32]="at ";
char mould2[32]=" shutdown /s ";
printf("1>请输入关机模式《倒计时/定时》:");
fgets(opt1,sizeof(opt1),stdin);
opt1[strlen(opt1)-1]='\0';
if(strcmp(opt1,"倒计时")==0)
{
printf("1>请输入倒计时秒数:");
fgets(sec+3,sizeof(sec),stdin);
sec[strlen(sec)-1]='\0';
strcat_s(mould2,sizeof(mould2),sec);
printf("\n");
system(mould2);
}
if(strcmp(opt1,"定时")==0)
{
printf("1>请输入时间(24小时制(24:00)):");
fgets(mould1+3,sizeof(mould1),stdin);
mould1[strlen(mould1)-1]='\0';
if(strlen(mould1)!=strlen("at 22:00")
&&strlen(mould1)!=strlen("at 22:00")
&&strlen(mould1)!=strlen("at 2:00")
&&strlen(mould1)!=strlen("at 2:00"))
{
printf("!>输入格式错误;格式如(24:00/0:00)\n");
return -2;
}
strcat_s(mould1,sizeof(mould1),mould2);
printf("1>请输入提醒倒计时秒数[60]:");
fgets(sec+3,sizeof(sec),stdin);
sec[strlen(sec)-1]='\0'; if(strlen(sec)>strlen("at "))
strcat_s(mould1,sizeof(mould1),sec);
printf("\n");
system(mould1);
}
}
if (strcmp(opt,"3")==0
||strcmp(opt,"打印所有计划")==0
||strcmp(opt,"Print all plans")==0)
{
system("at");
}
if (strcmp(opt,"4")==0
||strcmp(opt,"删除定时计划")==0
||strcmp(opt,"Delete work plan")==0)
{
while (1)
{
char opt1[32]={0};
char mould1[16]="at "; char mould2[16]=" /delete ";
menu2();
printf("1>请输入您的选择:");
fgets(opt1,sizeof(opt1),stdin);
opt1[strlen(opt1)-1]='\0';
system("at");
if (strcmp(opt1,"1")==0
||strcmp(opt1,"离开")==0
||strcmp(opt1,"Go away")==0)return 0;
if (strcmp(opt1,"2")==0
||strcmp(opt1,"删除全部计划")==0
||strcmp(opt1,"Delete all plans")==0)
{
printf("\n");
system("at /delete");
return 0;
}
if (strcmp(opt1,"3")==0
||strcmp(opt1,"按ID删除计划")==0
||strcmp(opt1,"Delete plan by ID")==0)
{
printf("1>根据上表输入要删除的计划的ID:");
fgets(mould1+3,sizeof(mould1),stdin);
mould1[strlen(mould1)-1]='\0';
printf("\n");
system(mould1);
printf("1>确定结束计划(Y/N)\n");
int x=getche();
if(x=='y'||x=='Y')
{
strcat_s(mould1,sizeof(mould1),mould2);
printf("\n");
system(mould1);
printf("1>已删除该计划\n");
}
}
}
}
return 0;
}
int menu1()
{
printf("1>---------------------------------------------------------------------------<1\n");
printf("1>《主菜单》<1\n");
printf("1> 1取消本次关机(Cancel this shutdown) 2设置关机(Set off) <1\n");
printf("1> 3打印所有计划(Print all plans) 4删除定时计划(Delete work plan)<1\n");
printf("1> 5离开(Go away)
<1\n");
printf("1>---------------------------------------------------------------------------<1\n");
return 0;