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

   程序功能:实现定时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);
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值