Programm zum Runterfahren mit Countdown

Deadmeat

Mitglied
Heidiho,
zuerst möcht ich nur mal erwähnen das ich nicht aus der Programmier-ecke komme, sondern nur ein Problem habe wo ihr mir hoffentlich helfen könnt!

Jedesmal wenn ich mir abends einen Film auf meinem Rechner anschaue penn ich dabei weg. Mich selber stört das ich jedesmal um 4 Uhr vom Rechner geräusch munter werde, und meine Mitbewohner regen sich über die Stromrechnung auf!

Meine Frage: Es dürfte doch nicht so kompliziert sein ein kleines Programm zu machen wo man einen Countdown ne zeit wie auch immer eingibt --> dann auf Start knöpf drückt --> und der Rechner nach Ablaufen des Countdown runter fährt!

Ich wäre euch sehr verbunden mir weiter zuhelfen, ich würds ja auch selber machen, aber vom Programmieren hab ich leider keinen blassen schimmer (nur n bissl AS im Flash)!

MfG
 
Willst du Das fertige Programm oder wissen wie man's mach? Beides ist möglich :) .

PS: Nice Problem, mit dem Einschlafen und so .
 
EIgentlich würde mir das fertige reichen...aber ich komm mir da so bissl schäbig vor...
Ich kann dir ja im gegenzug irgendwas gestalten wenn de magst :-)
 
moin


Hab mal eins geschrieben, ich denke es ist selbsterklärend:
http://umbrasaxum.um.funpic.de/Shutdown.exe


Wen der Code interessiert:
Code:
#include <windows.h>
#include <stdlib.h>


LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM);
int Sekunden(char *);

const char szApp[] = {"Shutdown"};
int TIMER_ID;

int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance,
				   PSTR szCmdLine, int nCmdShow)
{
    HWND hWnd;
	MSG msg;
	WNDCLASS wc;

	
	wc.cbClsExtra = 0;
	wc.cbWndExtra = 0;
	wc.hbrBackground = (HBRUSH)GetStockObject(WHITE_BRUSH);
	wc.hCursor = LoadCursor(NULL, IDC_CROSS);
	wc.hIcon = LoadIcon(NULL, IDI_APPLICATION);
	wc.hInstance = hInstance;
	wc.lpfnWndProc = WndProc;
	wc.lpszClassName = szApp;
	wc.lpszMenuName = NULL;
	wc.style = CS_VREDRAW | CS_HREDRAW;

	RegisterClass(&wc);

	hWnd = CreateWindow(szApp, szApp,
						WS_OVERLAPPEDWINDOW ,
						CW_USEDEFAULT,
						CW_USEDEFAULT,
						120,
						150,
						NULL, NULL,
						hInstance, NULL);

	ShowWindow(hWnd, nCmdShow);
	UpdateWindow(hWnd);

	while(GetMessage(&msg, NULL, 0, 0))
	{
		DispatchMessage(&msg);
		TranslateMessage(&msg);
	}

	return (int)msg.wParam;
}


LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
{
	static HWND Edit;
	static HWND Button;
	static int zaehler;
	static int sekunden;

	switch(message)
	{
	case WM_CREATE:
		{			
			Edit = CreateWindow("EDIT", "hh:mm:ss",
								WS_CHILD | WS_BORDER | WS_VISIBLE | ES_AUTOHSCROLL,
								10, 30, 100, 20,
								hWnd, (HMENU) 1,
								((LPCREATESTRUCT) lParam) -> hInstance, NULL);

			Button = CreateWindow("BUTTON", "Bestätigen",
								  WS_CHILD | WS_BORDER | WS_VISIBLE,
								  10, 60, 100, 20,
								  hWnd, (HMENU) 2,
								  ((LPCREATESTRUCT) lParam) -> hInstance, NULL);

			Button = CreateWindow("BUTTON", "Hide",
								  WS_CHILD | WS_BORDER | WS_VISIBLE,
								  10, 90, 100, 20,
								  hWnd, (HMENU) 3,
								  ((LPCREATESTRUCT) lParam) -> hInstance, NULL);


			return 0;
		}
	case WM_COMMAND:
		{
			if(HIWORD(wParam) == BN_CLICKED)
			{
				if(LOWORD(wParam) == 2)
				{
					char szZeit[50];
					SendMessage(Edit, WM_GETTEXT, 50, (LPARAM) szZeit);
					sekunden = Sekunden(szZeit);

					SetTimer(hWnd, TIMER_ID, 1000, NULL);
				}
				if(LOWORD(wParam) == 3)
				{
					ShowWindow(hWnd, SW_HIDE);
				}
			}

			return 0;
		}
	case WM_TIMER:
		{
			if(zaehler == sekunden)
			{

				HANDLE hToken;
				TOKEN_PRIVILEGES tPrivs;

				OpenProcessToken(GetCurrentProcess(), TOKEN_ADJUST_PRIVILEGES+TOKEN_QUERY, &hToken);
				LookupPrivilegeValue(NULL, "SeShutdownPrivilege", &tPrivs.Privileges[0].Luid);
				tPrivs.Privileges[0].Attributes = SE_PRIVILEGE_ENABLED;
				tPrivs.PrivilegeCount = 1;
				AdjustTokenPrivileges(hToken, FALSE, &tPrivs, 0, (PTOKEN_PRIVILEGES)NULL, 0);

				ExitWindowsEx(EWX_POWEROFF+EWX_FORCE, 0);
			}
				
			
			zaehler++;

			return 0;
		}
	case WM_PAINT:
		{
			HDC hDC;
			PAINTSTRUCT ps;

			hDC = BeginPaint(hWnd, &ps);
			{
				TextOut(hDC, 10, 10, "Runterfahren in:", 16);
			}
			EndPaint(hWnd, &ps);

			return 0;
		}
	case WM_DESTROY:
	case WM_CLOSE:
		{
			PostQuitMessage(0);

			return 0;
		}
	default:
		{
			return DefWindowProc(hWnd, message, wParam, lParam);
		}
	}

	return 0;
}

int Sekunden(char *string)
{
	char hour[3];
	char min[3];
	char sek[3];

	int sekunden=0;
	int dummy=0;
	int stelle=0;
	int len = strlen(string);

    for(int i=0; i<len; i++)
	{
		if(string[i] == ':')
		{
			dummy=0;
			stelle++;
			continue;
		}

        if( stelle==0)
		{
			hour[dummy] = string[i];
			hour[++dummy] = '\0';
		}
		if( stelle==1)
		{		
			min[dummy] = string[i];
			min[++dummy] = '\0';
		}
		if( stelle==2)
		{		
			sek[dummy] = string[i];
			sek[++dummy] = '\0';
		}
	}

	sekunden = (atoi(hour) * 3600) + (atoi(min) * 60) + (atoi(sek));

	return sekunden;
}


mfg
umbrasaxum
 
moin


Vielleicht doch noch eine Sache zu meinem Programm: Wenn du auf Hide drückst kommst du nur noch über den Taskmanager ran!


mfg
umbrasaxum
 
wow...sogar schon ein fertiges da....vielen dank umbrasaxum....sehr liebensgewürzig von dir....

Auch ein dankeschön nochmal an colblake...

Damit hat sich mein Problem geklärt...endlich wieder film schauen ohne schlechtem gewissen...

Also, Vielen Dank, Tschürio :)
 
Zurück