Powermeter [ win32 ] ( etat de la batterie de votre portable )

Soyez le premier à donner votre avis sur cette source.

Vue 8 437 fois - Téléchargée 393 fois

Description

Ce petit programme vous donne simplement l'état de la batterie de votre portable et vous indique si vous êtes connectés sur celle-ci ou sur courant alternatif.

Source / Exemple :


#include "windows.h"
#include "resource.h"
#include "PowerMeter.h"

void t1 ( void )
{
	SYSTEM_POWER_STATUS PowerStatus;
	char Temp[100];
	MSG Msg;

	while ( 1 )
	{
		::GetSystemPowerStatus(&PowerStatus);

		switch ( PowerStatus.ACLineStatus )
		{
		case 0 : 
			strcpy(Temp,"On Battery.");
			break;
		case 1 :
			strcpy(Temp,"On Ac Power.");
			break;
		default :
			strcpy(Temp,"Unknown status");
			break;
		}

		::SetDlgItemText(hMainWnd,IDC_STATUS,Temp);

		SendMessage(GetDlgItem(hMainWnd,IDC_METER),PBM_SETPOS,(WPARAM)(int)PowerStatus.BatteryLifePercent,0);

		wsprintf(Temp,"%d %%",PowerStatus.BatteryLifePercent);
		if ( PowerStatus.BatteryFlag & 0x08 )
				strcat(Temp," ( Charging )");
		else
		{
			if ( PowerStatus.BatteryFlag & 0x01 )
				strcat(Temp," ( High )");
			if ( PowerStatus.BatteryFlag & 0x02 )
				strcat(Temp," ( Low )");
			if ( PowerStatus.BatteryFlag & 0x04 )
				strcat(Temp," ( Critical )");
			if ( PowerStatus.BatteryFlag & 0x80 )
				strcpy(Temp,"No System Battery");
			if ( PowerStatus.BatteryFlag == 0xFF )
				strcpy(Temp,"Unknown Status");
		}
		::SetDlgItemText(hMainWnd,IDC_PERCENT,Temp);

		if ( PowerStatus.BatteryLifeTime != 0xFFFFFFFF )
		{
			wsprintf(Temp,"%d h %d", PowerStatus.BatteryLifeTime/3600, (PowerStatus.BatteryLifeTime%3600)/60);
			::SetDlgItemText(hMainWnd,IDC_TIME,Temp);
		}
		else
		{
			strcpy(Temp,"Unknown");
			::SetDlgItemText(hMainWnd,IDC_TIME,Temp);
		}

		::PeekMessage(&Msg,hMainWnd,0,0,PM_REMOVE);
		if ( Msg.message == EXIT )
			return;

		::Sleep ( 500 );
	}
}
BOOL CALLBACK MainDlgProc(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
{
	switch(message)
	{
	case WM_INITDIALOG :	
							break;
	case WM_CLOSE:
			PostThreadMessage(m_ThreadID,EXIT,0,0);
			PostQuitMessage(0);
	case WM_COMMAND:
		switch ( LOWORD(wParam) )
		{
		case IDC_QUIT:
			PostThreadMessage(m_ThreadID,EXIT,0,0);
			::PostQuitMessage(0);
			break;
		}
	}
	return 0;
}

int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow)
{
	MSG message;
	SYSTEM_POWER_STATUS PowerStatus;
	char Temp[100];

	_hInstance = hInstance;

	::InitCommonControls();

	hMainWnd = ::CreateDialog(hInstance, (LPCTSTR)IDD_MAIN, 0, MainDlgProc);
	if (!hMainWnd)
	{
		MessageBox(0, "Can't create main window", "Error", MB_ICONSTOP);
		return 1;
	}

	::ShowWindow(hMainWnd, 1);

	::SendMessage( GetDlgItem(hMainWnd, IDC_METER), PBM_SETRANGE, 0, MAKELPARAM (0, 100));

	::GetSystemPowerStatus(&PowerStatus);

	switch ( PowerStatus.ACLineStatus )
	{
	case 0 : 
		strcpy(Temp,"On Battery.");
		break;
	case 1 :
		strcpy(Temp,"On Ac Power.");
		break;
	default :
		strcpy(Temp,"Unknown status");
		break;
	}

	m_hThread = ::CreateThread(0,0,(LPTHREAD_START_ROUTINE)&t1,0,0,&m_ThreadID);

	::SetDlgItemText(hMainWnd,IDC_STATUS,Temp);

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

	return 0;
}

Codes Sources

A voir également

Ajouter un commentaire

Commentaires

patateman00
Messages postés
1
Date d'inscription
lundi 3 mai 2010
Statut
Membre
Dernière intervention
4 mai 2010
-
Salut!

J'arrive à faire marcher le .exe mais je n'arrive pas à l'éxécuter sous codeBlocks, est ce que quelqu'un peut m'aider?
victorcoasne
Messages postés
1100
Date d'inscription
jeudi 24 avril 2003
Statut
Membre
Dernière intervention
17 octobre 2012
3 -
Dommage que les labels des static n'ont pas été traduit en français (c'est pas ta source ?).
tomybbg44
Messages postés
3
Date d'inscription
vendredi 27 avril 2007
Statut
Membre
Dernière intervention
27 avril 2007
-
Bonjour,

Je voudrais simplement savoir comment j'installe ce programme sur mon pc portable. Merci de votre aide.
gbourgeois0019
Messages postés
152
Date d'inscription
lundi 3 avril 2006
Statut
Membre
Dernière intervention
2 juin 2008
1 -
Ah ben merci je saivais pas ;)
vecchio56
Messages postés
6539
Date d'inscription
lundi 16 décembre 2002
Statut
Modérateur
Dernière intervention
22 août 2010
7 -
Pour la complétion, tu as aussi Ctrl+Espace

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.