有時候我們想離開電腦去做別的事情,但用CMD命令定時關(guān)機實在太麻煩,還要換算成秒,輸錯了也是頭疼,取消定時關(guān)機也很麻煩。總之體驗感太差!今天為大家?guī)硪粋€用C語言實現(xiàn)定時關(guān)機。輸入分鐘后自動啟動定時關(guān)機計劃,支持一鍵取消定時關(guān)機和再從新設(shè)定關(guān)機時間。
在CMD命令中啟動定時關(guān)機命令是shutdown -s -t xx。xx為要設(shè)定定時關(guān)機的時間,單位是秒,執(zhí)行這個命令后就會啟動定時關(guān)機計劃。取消定時關(guān)機命令是:shutdown -a。執(zhí)行后會取消之前設(shè)定的定時關(guān)機計劃。但如果沒有設(shè)定定時關(guān)機計劃,會提示未設(shè)置定時關(guān)機計劃。
同樣我們在C語言中也是要用到這個命令,通過system()函數(shù)執(zhí)行定時關(guān)機或取消定時關(guān)機。
具體實現(xiàn)如下:
輸入時間實現(xiàn)關(guān)機
//程序分為2個部分:1.按鍵功能實現(xiàn)實現(xiàn)部分——輸入相應的按鍵進入相應的功能 // 2.執(zhí)行定時關(guān)機或取消定時關(guān)機部分 //包含的頭文件 #define _CRT_SECURE_NO_WARNINGS//取消vs2017中printf函數(shù)不安全warning問題 #include<stdio.h> #include<string.h>//字符串處理函數(shù) #include<windows.h> #include<conio.h>//包含按鍵交互
功能界面
取消定時關(guān)機
這里我先進行設(shè)定關(guān)機時間,再進入功能區(qū)選擇。當然也可以反著來
//主函數(shù)部分
int main()
{
DelayShutdown();
Keydown();
return 0;
}
//功能用兩個函數(shù)實現(xiàn)
void DelayShutdown();//延時關(guān)機函數(shù)
void Keydown();//按鍵交互函數(shù)
//按鍵功能選擇部分:
void Keydown()
{
int userKey;
while (1)
{
printf("關(guān)機提示語:n1鍵為取消定時n2鍵為重新設(shè)定時間n0鍵為退出本程序n");
printf("請輸入編號:");
scanf("%d",&userKey);
switch (userKey)
{
case 1: //1.取消定時關(guān)機
system("shutdown -a");
Sleep(1000);
break;
case 2: //重新設(shè)定時間
system("shutdown -a");//先取消計劃關(guān)機,再重新設(shè)定時間關(guān)機
DelayShutdown();
break;
case 0: //退出本程序
printf("正在退出中....n");
Sleep(2000);
exit(0);
break;
default:
printf("輸入錯誤!請重新輸入!n");
Sleep(1000);
}
system("cls");
}
}
//定時關(guān)機功能實現(xiàn)部分:
void DelayShutdown()
{
int delayTemp, delay;
char shutdown[30];
printf("請輸入設(shè)置定時關(guān)機的時間(分鐘):");
scanf("%d", &delayTemp);
delay = delayTemp * 60;//把輸入的時間數(shù)轉(zhuǎn)為秒
sprintf_s(shutdown, "shutdown -s -t %d", delay);//格式化輸出字符串
system(shutdown);
}
關(guān)于本程序不能在別人電腦上運行問題:
在vs2017中解決方法:
將debug改為release。
進入項目——>屬性里面將C/C++——>代碼生成——>運行庫將/MD或/MDd改為/MT或/MTd再從新編譯一下就可以了。






