Step. 发表于 2012-7-14 15:32:27

一个定时关机的程序

代码如下:
#include "stdafx.h"
#include <windows.h>
#include <windowsx.h>
#include "resource.h"
#include "MainDlg.h"
#include "stdlib.h"

BOOL WINAPI Main_Proc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
{
    switch(uMsg)
    {
      HANDLE_MSG(hWnd, WM_INITDIALOG, Main_OnInitDialog);
      HANDLE_MSG(hWnd, WM_COMMAND, Main_OnCommand);
HANDLE_MSG(hWnd,WM_CLOSE, Main_OnClose);
    }
    return FALSE;
}
void CALLBACK myclock(HWND hwnd,UINT Message,UINT iTimerID,DWORD dwTime)
{
SYSTEMTIME now;
GetLocalTime(&now);
TCHAR time;
wsprintf(time,"%d年%d月%d日%d:%d:%d",now.wYear,now.wMonth,now.wDay,now.wHour,now.wMinute,now.wSecond);
SetDlgItemText(hwnd,IDC_EDITTIME,time);
}
BOOL Main_OnInitDialog(HWND hwnd, HWND hwndFocus, LPARAM lParam)
{
SetTimer(hwnd,0,1000,myclock);
return TRUE;
}
void Main_OnCommand(HWND hwnd, int id, HWND hwndCtl, UINT codeNotify)
{
    switch(id)
    {
case IDC_BUTTON1:
{
   TCHAR timeshut;
   GetDlgItemText(hwnd,IDC_EDIT2,timeshut,sizeof(timeshut));
   int timeshut1=atoi(timeshut);
   system("shutdown -s -t timeshut1");
}break;
case IDC_BUTTON2:
   {
    system("shutdown -a");
   }break;
      default:
break;
    }
}
void Main_OnClose(HWND hwnd)
{
    EndDialog(hwnd, 0);
}
我编译运行后在N秒后框框里写数字再设定,他会闪个DOS窗口然后没了,我又在timeshut1的位置写成timeshut字符型的,还是不行.
我把程序里的timeshut1直接改成数字,例如50,60的就可以了,
取消的功能是可以的.
我想问下要怎么修改啊

小甲鱼 发表于 2012-7-14 15:32:28

#include<stdio.h>
#include<string.h>
#include<stdlib.h>

int print()
{
    printf(" ╪╪╪╪╪╪╧╧╧╧╧╧╧╧╪╪╪╪╪╪\n");
    printf("╔═══╧╧ C语言 关机程序 ╧╧═══╗\n");
    printf("║※1.实现10分钟内的定时关闭计算机 ║\n");
    printf("║※2.立即关闭计算机 ║\n");
    printf("║※3.注销计算机   ║\n");
    printf("║※0.退出系统       ║\n");
    printf("╚═══════════════════╝\n");
   
    return 0;
}

int main()
{
    int c;
   
    system("title C语言关机程序");//设置cmd窗口标题
    system("mode con cols=48 lines=25");//窗口宽度高度
    system("color 0B");
    system("date /T");
    system("TIME /T");
    char cmd="shutdown -s -t ";
    char t="0";
   
    print();

    scanf("%d",&c);
    getchar();
   
    switch(c)
    {
      case 1:printf("您想在多少秒后自动关闭计算机?(0~600)\n");scanf("%s",t);system(strcat(cmd,t));break;
      case 2:system("shutdown -p");break;
      case 3:system("shutdown -l");break;
      case 0:break;
      default:printf("Error!\n");
    }
   
    system("pause");
    exit(0);
   
    return 0;
}参考下~

小甲鱼 发表于 2012-7-14 15:44:45

system("shutdown -s -t timeshut1");// timeshut1 是string 类型。

Step. 发表于 2012-7-14 15:46:31

小甲鱼 发表于 2012-7-14 15:44 static/image/common/back.gif


system("shutdown -s -t timeshut1");
那timeshut1这个位置要用什么类型的呢

肥猫控 发表于 2012-7-14 15:49:27

Step. 发表于 2012-7-14 15:46 static/image/common/back.gif
system("shutdown -s -t timeshut1");
那timeshut1这个位置要用什么类型的呢

哇塞,斌少你自己写的吗?

小甲鱼 发表于 2012-7-14 15:49:37

同样字符串就行。

Xaros 发表于 2012-7-14 15:53:58

好长啊。。。

Xaros 发表于 2012-7-14 15:54:29

还看不懂呢- -

Step. 发表于 2012-7-14 15:57:39

小甲鱼 发表于 2012-7-14 15:49 static/image/common/back.gif
同样字符串就行。

那为什么我改成timeshut不行啊

Step. 发表于 2012-7-14 16:03:30

肥猫控 发表于 2012-7-14 15:49 static/image/common/back.gif
哇塞,斌少你自己写的吗?

你是谁啊?崔一品?

小甲鱼 发表于 2012-7-14 16:04:23

因为双引号里边是字符串的内容,编译器并不认为那是一个变量~

Step. 发表于 2012-7-14 16:09:21

小甲鱼 发表于 2012-7-14 16:04 static/image/common/back.gif
因为双引号里边是字符串的内容,编译器并不认为那是一个变量~

那我要怎么改呢?初学者不太会呵呵

丿夏夜灬彬刂 发表于 2012-7-14 17:14:47

{:5_92:}观看下

丿夏夜灬彬刂 发表于 2012-7-14 18:51:57

小甲鱼 发表于 2012-7-14 15:32 static/image/common/back.gif
参考下~

╪╪╪╪╪╪╧╧╧╧╧╧╧╧╪╪╪╪╪ 这些符号怎么打的我键盘咋找不到0.0{:5_94:}

五月跳回家 发表于 2012-7-16 01:25:57

Step. 发表于 2012-7-14 16:09 static/image/common/back.gif
那我要怎么改呢?初学者不太会呵呵


int timeshut1=atoi(timeshut);
sprintf(szcmd,"shutdown -s -t%d",timeshut1)
system(szcmd);

ExiaGN001 发表于 2023-2-1 09:19:40

Step. 发表于 2012-7-14 15:46
system("shutdown -s -t timeshut1");
那timeshut1这个位置要用什么类型的呢

整整数即可,超过86400(1日对应秒数)可能会坏。(挖坟
页: [1]
查看完整版本: 一个定时关机的程序