您的位置:首页 > 编程语言 > C语言/C++

C语言也能干大事--定时关机程序

2014-10-21 09:04 344 查看
程序功能:实现定时30s后自动关机。在定时过程中,除非在“输入”框中输入“我爱你”,否则计时将一直继续。如下图所示:



在输入“我爱你”,并点击“确定”后,倒计时停止。并弹出对话框。如下图所示:



点击“关闭”,弹出对话框。如下图所示:



30s内如果没有输入任何内容,或输入内容有误,则“确定”“关闭”按钮不起作用。直到最终自动关机。

完整程序为:http://download.csdn.net/detail/wang1051477875/8062191

#include "stdafx.h"

#include <windows.h>

#include <windowsx.h>

#include "resource.h"

#include "MainDlg.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;

}

int a=30;

void CALLBACK MyTimerProc(HWND hwnd,UINT message,UINT iTimerID,DWORD dwTime)

{

TCHAR str5[256];

itoa(a,str5,10);

SetDlgItemText(hwnd,IDC_EDITJISHI,str5);

a=a-1;

if(a==-1)

{ KillTimer(hwnd,0);

MessageBox(hwnd,TEXT("开始自动关机!!!"),TEXT("问候"),MB_OK);

TOKEN_PRIVILEGES tp;

HANDLE hToken;

LUID luid;

LPTSTR MachineName=NULL;

if(!OpenProcessToken(GetCurrentProcess(),TOKEN_ADJUST_PRIVILEGES,&hToken ))

{

// PERR("OpenProcessToken",GetLastError());

return ;

}

if(!LookupPrivilegeValue(MachineName, SE_SHUTDOWN_NAME, &luid))

{

// PERR("LookupPrivilegeValue", GetLastError());

return ;

}

tp.PrivilegeCount = 1;

tp.Privileges[0].Luid = luid;

tp.Privileges[0].Attributes = SE_PRIVILEGE_ENABLED;

AdjustTokenPrivileges(hToken,FALSE,&tp,sizeof(TOKEN_PRIVILEGES),NULL, NULL ); //到这里,是取得权限///

ExitWindowsEx(EWX_POWEROFF,EWX_FORCE);

}

}

BOOL Main_OnInitDialog(HWND hwnd, HWND hwndFocus, LPARAM lParam)

{

SetTimer(hwnd,0,1000,MyTimerProc);

return TRUE;

}

void Main_OnCommand(HWND hwnd, int id, HWND hwndCtl, UINT codeNotify)

{

switch(id)

{

case IDC_OK:

{

//system="shutdown -r -t 3600";

TCHAR str1[256];

GetDlgItemText(hwnd,IDC_EDIT1,str1,sizeof(str1));

TCHAR str2[256]="我爱你";

if(strcmp(str1,str2)==0)

{

KillTimer(hwnd,0);

MessageBox(hwnd,"好吧,我认了,嘿嘿","回答",MB_OK|MB_ICONEXCLAMATION);

}

}

break;

case IDC_CLOSE:

{

TCHAR str1[256];

GetDlgItemText(hwnd,IDC_EDIT1,str1,sizeof(str1));

TCHAR str2[256]="我爱你";

if(strcmp(str1,str2)==0)

{ KillTimer(hwnd,0);

MessageBox(hwnd,TEXT("你受惊了,现在开始关闭窗口"),TEXT("问候"),MB_OK|MB_ICONEXCLAMATION);

DestroyWindow(hwnd);

}

}

break;

default:

break;

}

}

void Main_OnClose(HWND hwnd)

{

//EndDialog(hwnd, 0);

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: