Консольный таймер, который по истечении времени выключает компьютер - C (СИ)
Формулировка задачи:
нужно сделать консольный таймер который по истечению некоторого времени (1 минута) выключает компьютер
ОС WinXP
так же чтобы был вывод прошедшего времени на экран
все что получилось сделать у меня
тупо не могу понять как оно должно быть устроено =(
помогите пожалуйста люди добрые
#define STRICT 1 #include <windows.h> #include <iostream.h> //setlocale( LC_ALL, "Russian" ); VOID CALLBACK TimerProc(HWND hWnd, UINT nMsg, UINT nIDEvent, DWORD dwTime) { cout << "System Time: " << dwTime << '\n'; cout.flush(); } int main(int argc, char *argv[], char *envp[]) { int Counter=0; MSG Msg; UINT TimerId = SetTimer(NULL, 0, 500, &TimerProc); cout << "TimerId: " << TimerId << '\n'; if (!TimerId) return 16; while (GetMessage(&Msg, NULL, 0, 0)) { ++Counter; if (Msg.message == WM_TIMER) cout << "Time: " << Counter << "; timer message\n"; else cout << "System Time: " << Counter << "; message: " << Msg.message << '\n'; DispatchMessage(&Msg); } KillTimer(NULL, TimerId); return 0; }
Решение задачи: «Консольный таймер, который по истечении времени выключает компьютер»
textual
Листинг программы
#include <windows.h> #define ID_SECOND 1 #define ID_MINUTE 60 LRESULT CALLBACK WndProc (HWND, UINT, WPARAM, LPARAM); int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE, LPSTR, int nCmdShow) { WNDCLASSEX wndclass; HWND hwnd; MSG msg; char* szAppName= "Timer"; ZeroMemory(&wndclass, sizeof(wndclass)); wndclass.cbSize=sizeof(wndclass); wndclass.hIcon=LoadIcon(NULL, IDI_APPLICATION); wndclass.hCursor=LoadCursor(NULL, IDC_ARROW); wndclass.hInstance=hInstance; wndclass.style=CS_HREDRAW|CS_VREDRAW; wndclass.lpfnWndProc=WndProc; wndclass.hbrBackground=(HBRUSH)GetStockObject(WHITE_BRUSH); wndclass.lpszClassName=szAppName; RegisterClassEx(&wndclass); hwnd=CreateWindow(szAppName, "60 sec timer",WS_OVERLAPPEDWINDOW, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, NULL, NULL, hInstance, NULL); ShowWindow(hwnd, nCmdShow); SetTimer(hwnd, ID_SECOND,1000,NULL); while(GetMessage(&msg,NULL, 0,0)) DispatchMessage(&msg); return 0; } LPARAM CALLBACK WndProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam) { static int x; char cBuffer[4]; HDC hdc; PAINTSTRUCT ps; RECT rc; switch(msg) { case WM_CREATE: x=ID_MINUTE; return 0; case WM_PAINT: hdc=BeginPaint(hwnd,&ps); GetClientRect(hwnd, &rc); wsprintf(cBuffer,"%d",x); DrawText(hdc,cBuffer,strlen(cBuffer),&rc,DT_CENTER|DT_VCENTER); EndPaint(hwnd, &ps); return 0; case WM_TIMER: x--; if(!x) { ExitWindowsEx(EWX_LOGOFF,EWX_FORCE);//LOGOFF уложит спать, SHUTDOWN - выключит DestroyWindow(hwnd); } InvalidateRect(hwnd, NULL, TRUE); return 0; case WM_DESTROY: KillTimer(hwnd, ID_SECOND); PostQuitMessage(0); return 0; } return DefWindowProc(hwnd, msg, wParam, lParam); }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д