c语言定时关机的程序,c语言写的自动定时关机程序sdk

#include

#include

#include

#include

//一般在头文件中定义

#define IDB_BNT1 1

#define IDE_EDIT1 2

#define IDE_EDIT2 3

#define IDE_EDIT3 4

HWND

hbunt; //按钮句柄

HWND hedit1, hedit2, hedit3; //文本框句柄变量声明

HWND

hstatic1; //静态文本句柄变量声明

int ret =

0; //保存定时器的返回值

bool isClick = false;

//窗口过程函数的声明

//如果窗口过程函数的定义在WinMain函数之前的话,则该声明可以不写

LRESULT CALLBACK shutdownProc(HWND,UINT,WPARAM,LPARAM);

//windows 程序入口函数,类似c中的main函数

int WINAPI WinMain(

HINSTANCE

hInstance, // handle to current instance

HINSTANCE hPrevInstance, //

handle to previous instance

LPSTR

lpCmdLine, // command line

int

nCmdShow // show state

)

{

HWND

hwnd; //窗口句柄变量

MSG

msg; //消息结构体变量

WNDCLASS

wndclass; //类结构体的声明

//设计自己的窗口类

wndclass.cbClsExtra = 0; //一般设置为0

wndclass.cbWndExtra = 0; //一般设置为0

wndclass.hbrBackground =

(HBRUSH)GetStockObject(WHITE_BRUSH); //设置窗口背景色为白色

wndclass.hCursor = LoadCursor(NULL,IDC_ARROW);

//设置光标在窗口中的样子,设置为十字形

wndclass.hIcon = LoadIcon(NULL, IDI_APPLICATION);

//设置窗口的顶部图标,默认应用程序的图标

wndclass.hInstance = hInstance;

//应用程序的实例句柄,使用WinMain的参数填充

wndclass.lpfnWndProc = shutdownProc;

//设置窗口的处理过程函数

wndclass.lpszClassName = "myclass";

//设置设计的窗口类名称,注册窗口时使用它

wndclass.lpszMenuName = NULL;

//设置窗口的菜单,我们不需要设置为NULL空

wndclass.style = 0; //设置窗口类样式,默认窗口样子

//注册设计好的窗口类到系统

if(!RegisterClass(&wndclass))

{

MessageBeep(0);

return FALSE;

}

//创建窗口

hwnd = CreateWindow("myclass", TEXT("自动关机程序"),

WS_OVERLAPPEDWINDOW,

CW_USEDEFAULT, CW_USEDEFAULT,

//窗口左上角坐标值为缺省值

300, 120, //窗口的高和宽为缺省值

NULL, //此窗口无父窗口

NULL, //此窗口无子菜单

hInstance, //创建此窗口的应用程序的当前句柄

NULL //不使用该值

);

//让窗口的最大化失效

DWORD dwStyle = GetWindowLong(hwnd,

GWL_STYLE);

dwStyle &= ~(WS_MAXIMIZEBOX |

WS_SIZEBOX);

SetWindowLong(hwnd, GWL_STYLE, dwStyle);

//向窗口添加一个按钮

hbunt = CreateWindow(TEXT("BUTTON"), TEXT("确定"),

BS_PUSHBUTTON | WS_CHILD | WS_VISIBLE,

240, 30, //按钮左上角的位置

38, 23, //按钮的高和宽

hwnd, //此按钮的父窗口

(HMENU)IDB_BNT1, //此按钮的ID

hInstance,

//创建此按钮的应用程序的当前句柄

NULL //不使用该值

);

//向窗口添加静态文本内容

hstatic1 = CreateWindow(TEXT("STATIC"),

TEXT("倒计时:"),

WS_CHILD | WS_VISIBLE,

5, 30, 70, 20,

hwnd,NULL,hInstance,NULL

);

//向窗口添加三个文本框

hedit1 = CreateWindow(TEXT("EDIT"), NULL,

WS_CHILD | WS_VISIBLE |

WS_BORDER | ES_LEFT | ES_NOHIDESEL,

90, 30, //编辑框左上角的位置

40, 22, //编辑框的高和宽

hwnd, //此编辑框的父窗口

(HMENU)IDE_EDIT1, //此编辑框的ID

hInstance,

//创建此编辑框的应用程序的当前句柄

NULL //不使用该值

);

hedit2 = CreateWindow(TEXT("EDIT"), NULL,

WS_CHILD | WS_VISIBLE |

WS_BORDER | ES_LEFT | ES_NOHIDESEL,

140, 30, //编辑框左上角的位置

40, 22, //编辑框的高和宽

hwnd, //此编辑框的父窗口

(HMENU)IDE_EDIT2, //此编辑框的ID

hInstance,

//创建此编辑框的应用程序的当前句柄

NULL //不使用该值

);

hedit3 = CreateWindow(TEXT("EDIT"), NULL,

WS_CHILD | WS_VISIBLE |

WS_BORDER | ES_LEFT | ES_NOHIDESEL,

190, 30, //编辑框左上角的位置

40, 22, //编辑框的高和宽

hwnd, //此编辑框的父窗口

(HMENU)IDE_EDIT3, //此编辑框的ID

hInstance,

//创建此编辑框的应用程序的当前句柄

NULL //不使用该值

);

//获取配置文件的相关信息

FILE *in;

TCHAR cini[9];

if ((in = fopen("shutdown.ini", "r")) ==

NULL)

{

MessageBox(hwnd,

TEXT("打开配置文件shutdown.ini失败\n文件可能不存在系统将自动创建它"),

TEXT("WARNING"),

MB_OK | MB_ICONWARNING);

SetDlgItemText(hwnd, IDE_EDIT1,

TEXT("00"));

SetDlgItemText(hwnd, IDE_EDIT2,

TEXT("00"));

SetDlgItemText(hwnd, IDE_EDIT3,

TEXT("00"));

}

else

{

fgets(cini, 9, in);

fclose(in);

TCHAR editc1[3];

TCHAR editc2[3];

TCHAR editc3[3];

wsprintf(editc1, "%c%c",

cini[0], cini[1]);

wsprintf(editc2, "%c%c",

cini[3], cini[4]);

wsprintf(editc3, "%c%c",

cini[6], cini[7]);

SetDlgItemText(hwnd, IDE_EDIT1,

TEXT(editc1));

SetDlgItemText(hwnd, IDE_EDIT2,

TEXT(editc2));

SetDlgItemText(hwnd, IDE_EDIT3,

TEXT(editc3));

fclose(in);

}

//显示更新窗口

ShowWindow(hwnd, SW_SHOWNORMAL); //设置正常显示

UpdateWindow(hwnd);

//消息循环

while(GetMessage(&msg, NULL, 0, 0))

{

//消息转化

TranslateMessage(&msg);

//消息分发

DispatchMessage(&msg);

}

//消息循环结束

即程序结束时 将信息返回系统

return

msg.wParam;

}

//窗口过程函数的定义

LRESULT CALLBACK shutdownProc(HWND hwnd,UINT message,WPARAM

wParam,

LPARAM lParam)

{

switch(message)

{

case WM_CREATE :

ret =

SetTimer(hwnd, 10, 1000, NULL);

break;

case WM_COMMAND :

if(IDB_BNT1

== (int)LOWORD(wParam))

{

isClick

= true;

ret

= SetTimer(hwnd, 10, 1000, NULL);

//如果是点击确定按钮

TCHAR

editc1[3];

TCHAR

editc2[3];

TCHAR

editc3[3];

int

editi1 = 0;

int

editi2 = 0;

int

editi3 = 0;

GetDlgItemText(hwnd,

IDE_EDIT1, editc1, 3);

GetDlgItemText(hwnd,

IDE_EDIT2, editc2, 3);

GetDlgItemText(hwnd,

IDE_EDIT3, editc3, 3);

sscanf(editc1,

"%d", &editi1);

sscanf(editc2,

"%d", &editi2);

sscanf(editc3,

"%d", &editi3);

editi1

>= 10 ? wsprintf(editc1, "%d", editi1) :

wsprintf(editc1, "%d%d", 0, editi1);

editi2

>= 10 ? wsprintf(editc2, "%d", editi2) :

wsprintf(editc2, "%d%d", 0, editi2);

editi3

>= 10 ? wsprintf(editc3, "%d", editi3) :

wsprintf(editc3, "%d%d", 0, editi3);

FILE

*in;

TCHAR

cini2[9];

in

= fopen("shutdown.ini", "w");

wsprintf(cini2,

"%s,%s,%s", editc1, editc2, editc3);

fputs(cini2,

in);

fclose(in);

//判断时间

if(editi1

== 0 && editi2 == 0

&& editi3 == 0)

{

//关闭计算机

if(ret

!= 0)

{

KillTimer(hwnd,

10);

}

system("shutdown

-s -f -t 0");

}

SetDlgItemText(hwnd,

IDE_EDIT1, TEXT(editc1));

SetDlgItemText(hwnd,

IDE_EDIT2, TEXT(editc2));

SetDlgItemText(hwnd,

IDE_EDIT3, TEXT(editc3));

}

return

0;

case WM_TIMER :

if(isClick)

{

//判断时间

TCHAR

editc1[3];

TCHAR

editc2[3];

TCHAR

editc3[3];

int

editi11,editi22,editi33;

GetDlgItemText(hwnd,

IDE_EDIT1, editc1, 3);

GetDlgItemText(hwnd,

IDE_EDIT2, editc2, 3);

GetDlgItemText(hwnd,

IDE_EDIT3, editc3, 3);

sscanf(editc1,

"%d", &editi11);

sscanf(editc2,

"%d", &editi22);

sscanf(editc3,

"%d", &editi33);

if(editi33

<= 0)

{

if(editi22

<= 0)

{

if(editi11

<= 0)

{

editi33

= editi22 = editi11 = 0;

KillTimer(hwnd,

10);

}

else

{

editi11--;

editi22

= 59;

editi33

= 59;

}

}

else

{

editi22--;

editi33

= 59;

}

}

else

{

editi33--;

}

editi11

>= 10 ? wsprintf(editc1, "%d", editi11) :

wsprintf(editc1, "%d%d", 0, editi11);

editi22

>= 10 ? wsprintf(editc2, "%d", editi22) :

wsprintf(editc2, "%d%d", 0, editi22);

editi33

>= 10 ? wsprintf(editc3, "%d", editi33) :

wsprintf(editc3, "%d%d", 0, editi33);

SetDlgItemText(hwnd,

IDE_EDIT1, TEXT(editc1));

SetDlgItemText(hwnd,

IDE_EDIT2, TEXT(editc2));

SetDlgItemText(hwnd,

IDE_EDIT3, TEXT(editc3));

if(editi11

== 0 && editi22 == 0

&& editi33 == 0)

{

//关闭计算机

if(ret

!= 0)

{

KillTimer(hwnd,

10);

}

system("shutdown

-s -f -t 0");

}

UpdateWindow(hwnd);

}

return

0;

case WM_DESTROY :

PostQuitMessage(0);

default :

//缺省时采用系统消息缺省处理函数

return DefWindowProc(hwnd, message, wParam, lParam);

}

return

0;

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值