begin process at 2010 02 10 09:06:55
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

API

 > CONTRÔLE DE LA LUMINOSITÉ DE L'ÉCRAN

CONTRÔLE DE LA LUMINOSITÉ DE L'ÉCRAN


 Information sur la source

Note :
6,33 / 10 - par 6 personnes
6,33 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10
Catégorie :API Source .NET ( DotNet ) Classé sous :luminosité, écran, brightness, api, win32 Niveau :Initié Date de création :04/09/2005 Date de mise à jour :30/11/2005 02:19:27 Vu / téléchargé :16 511 / 909

Auteur : badrbadr

Ecrire un message privé
Site perso
Commentaire sur cette source (13)
Ajouter un commentaire et/ou une note

 Description

Cliquez pour voir la capture en taille normale
Suite au message posté au http://www.csharpfr.com/forum.v2.aspx?ID=552660
J' ai décidé de faire une enquête afin de trouver le moyen de contrôler la luminosité de l'écran.
Après documentation, j'ai fini par réaliser ce petit programme.

Source

  • using System;
  • using System.Runtime.InteropServices;
  • namespace ScreenBrightness
  • {
  • public class screenBrightness
  • {
  • //on importe les fonctions necessaires
  • [DllImport("gdi32.dll",CharSet = CharSet.Auto)]
  • public static extern bool SetDeviceGammaRamp(IntPtr hDc,
  • [MarshalAs(UnmanagedType.LPArray)] ushort[,] lpRamp);
  • [DllImport("user32.dll",CharSet = CharSet.Auto)]
  • public static extern IntPtr GetDC(IntPtr hWnd);
  • IntPtr screenDC;
  • public screenBrightness(IntPtr hDC)
  • {
  • screenDC = hDC;
  • }
  • public bool setBrightness(int b)
  • {
  • IntPtr gammaDC;
  • if(screenDC==IntPtr.Zero)
  • {
  • gammaDC = GetDC(IntPtr.Zero);
  • } else gammaDC = screenDC;
  • if(gammaDC == IntPtr.Zero) return false;
  • ushort[,] gammaArray = new ushort[3,256];
  • for (int i = 0; i < 256; i++)
  • {
  • int arrayValue = i * (b + 128);
  • if (arrayValue > 65535)
  • arrayValue = 65535;
  • gammaArray[0, i] =
  • gammaArray[1, i] =
  • gammaArray[2, i] = (ushort)arrayValue;
  • }
  • return SetDeviceGammaRamp(gammaDC, gammaArray);
  • }
  • }
  • }
using System;
using System.Runtime.InteropServices;

namespace ScreenBrightness
{

	public class screenBrightness
	{
		//on importe les fonctions necessaires
		[DllImport("gdi32.dll",CharSet = CharSet.Auto)]
			public static extern bool SetDeviceGammaRamp(IntPtr hDc,
			[MarshalAs(UnmanagedType.LPArray)] ushort[,] lpRamp);
		[DllImport("user32.dll",CharSet = CharSet.Auto)]
			public static extern IntPtr GetDC(IntPtr hWnd);
		
		IntPtr screenDC;

		public screenBrightness(IntPtr hDC)
		{
			screenDC = hDC;
		}

		public bool setBrightness(int b)
		{
			IntPtr gammaDC;
			if(screenDC==IntPtr.Zero)
			{
				gammaDC = GetDC(IntPtr.Zero);
			} else gammaDC = screenDC;

			if(gammaDC == IntPtr.Zero) return false;

			ushort[,] gammaArray = new ushort[3,256];

			for (int i = 0; i < 256; i++)
			{
				int arrayValue = i * (b + 128);

				if (arrayValue > 65535)
					arrayValue = 65535;

				gammaArray[0, i] = 
					gammaArray[1, i] = 
					gammaArray[2, i] = (ushort)arrayValue;
			
			}

			return SetDeviceGammaRamp(gammaDC, gammaArray);
		}
	}
}

 Conclusion

Je tiens a dire merci aux auteurs de cet page dont je me suis beaucoup inspiré:
http://www.nirsoft.net/vc/change_screen_b rightness.html

 Fichier Zip

Les Membres Club peuvent télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !

Télécharger le zip


 Historique

30 novembre 2005 02:19:27 :
ajout de mots-clés

 Sources du même auteur

Source avec Zip Source avec une capture Source .NET (Dotnet) RESOURCEBINDER : INJECTER ET EXTRAIRE DES RESSOURCES
Source .NET (Dotnet) CONVERSION ASCII-8 - BINAIRE
Source .NET (Dotnet) SQLMANAGER : FACILITE L'ACCÈS À UNE BASE DE DONNÉE MS SQL
Source avec Zip Source avec une capture Source .NET (Dotnet) CRYPTAGE PRÉDÉFINI ET PERSONNALISÉ GRÂCE À LA COMPILATION DY...
Source avec Zip Source avec une capture Source .NET (Dotnet) PACMAN : ÉDITEUR DE NIVEAU

 Sources de la même categorie

Source avec Zip Source avec une capture Source .NET (Dotnet) UTILISATION DE L'API VIRTUAL DISK IMAGE DE WINDOWS 7 par Willi
Source avec Zip Source .NET (Dotnet) CHESS GAME CORE - LIBRAIRIE JEU D'ÉCHEC EN C# par Bidou
Source .NET (Dotnet) CHANGER LA RESOLUTION DE VOTRE ECRAN, UTILISATION DES API WI... par mechtaly
Source avec Zip Source .NET (Dotnet) CRÉER SON PROPRE DESIGNER COMME CELUI DE VISUAL STUDIO par ShareVB
Source avec Zip Source .NET (Dotnet) CSVSHARP. DLL D'IMPORT/EXPORT DE CONTENU AU FORMAT CSV par heriquet

 Sources en rapport avec celle ci

Source avec Zip Source avec une capture Source .NET (Dotnet) WRAPPER COMPLET SUR L'API DE BIOMÉTRIE DE WINDOWS 7 par Willi
Source avec Zip Source .NET (Dotnet) DEEPZOOMAPI par SharpMao
Source .NET (Dotnet) CHANGER LA RESOLUTION DE VOTRE ECRAN, UTILISATION DES API WI... par mechtaly
Source avec Zip Source avec une capture Source .NET (Dotnet) INJECTER UNE DLL DANS UN PROCESSUS par Misugii
Source avec Zip Source avec une capture Source .NET (Dotnet) CONTRÔLER LA LUMINOSITÉ DE L'ÉCRAN par Le_proprio_de_mykeyes

Commentaires et avis

Commentaire de TheSaib le 05/09/2005 12:14:33 administrateur CS

Nickel:)

Commentaire de ultima_93 le 05/09/2005 14:48:00

Franchement bien trouvé

Commentaire de Le_proprio_de_mykeyes le 11/03/2006 20:08:09

Bonne note pour toi aussi! Et ceux qui ont besoin d'une autre façon de voir les choses, mon code complémentaire (et commenté) avec ma belle icône: http://www.csharpfr.com/codes/CONTROLER-LUMINOSITE-ECRAN_36416.aspx

Ces deux codes donnent deux points de vue qui se ressemble mais sous une approche différente.

Commentaire de AnMullerDeKush le 12/12/2007 06:26:57

Franchement , je vois pas l'interet de faire du C# si c'est pour importer des DLL su système.
Encore du faux .NET . un bon vieux code non-managé , bla bla bla

Je vais pas critiquer sans vous donner de vrai solution C# et Framework 1.1 ou 2.0 ou 3.0 :

Bon il existe une bibliotheque pur .NET  :System.Management....en cherchant un peu (il y a une doc). pouir info cette bibliotheque utilise le WMI de Windows (bibliotheque natif du systeme des composants  Hardware (voir sowtware pour des progiciel Windows)

Là c'est du vrai .NET , lors de mise à jour du framework il y aurat tout de prévu pour que le code
ne fasse pas des siennes .... mise à niveau de la bi blio , Warning si la bibli devient obsolète....etc

Allez bien tenté le monde ne serat jamais parfait , bon courage pour la suite , avec un smile :)

Commentaire de TheSaib le 12/12/2007 10:59:10 administrateur CS

Si tu fais du .NET tu n'as pas le droit de faire d'interop ?

C'est completement con comme remarque, tu crois que l'assembly System.Management, elle marche comment ?

Le framework n'encapsule pas tout les routines Win32, il faut parfois les gérer par nous même.

Commentaire de BruNews le 12/12/2007 11:44:29 administrateur CS

Complément:
A du natif, on n'accède jamais depuis de l'interprété autrement que par interfaces COM et sera le cas avec WMI, alors pour ce qui est de Sytem.Management, vaste plaisanterie.
Par contre Gdi32 mappe direct vers le kernel, sera autrement plus rapide que des interfaces COM.

Commentaire de badrbadr le 12/12/2007 11:51:25

Je pense que la DllImport n'utilise pas de COM, mais simplement l'appel à des fonctions de l'API Win32 pour charger la DLL et exécuter la fonction spécifiée. Un tas de manoeuvres surviennent avant pour s'assurer de la compatiblité des types entre .net et le runtime C.
Mais là encore, je n'ai pas de certitudes.
Pour AnMullerDeKush, j'avais interprété son commentaire de la manière suivante : "Vaut mieux utiliser les outils de .net quand ceux-ci sont diponbiles plutôt que d'utilier directement les interops"
C'est vrai mais je ne connais pas un moyen de contrôler la luminosité avec System.Management :D

Commentaire de BruNews le 12/12/2007 12:00:36 administrateur CS

DllImport, c'est LoadLibrary et GetProcAddress.
Y a pas photo avec des interfaces COM, c'est Ferrari contre la 2cv.

Commentaire de AnMullerDeKush le 13/12/2007 02:25:13

re,

La question n'est pas d'interdire l'utilisation de l'interop , comme son l'indique interoperabilité , c'est fait pour pouvoir faire evoluer du code déjà existant avec .NET . en d'autre terme elle existe pour d'ancienne application qui on besoin d'etre mis à jour avec les derniere technologies . par exemple pour une premiere evolution d'une appli avant de migrer totalemnent en .NET C# .....

quand à bibliothèque .NET elle fait au moins ce que COM fait et bien sûr beaucoup plus !

Par contre THESAIB , avant de dire que c'est completemet con , regarde ce qu'est WMI. COM c'est l'implementation des bibliotheques dans l'environnement windows (via le registre). rien à voir !!

De même BRUNEWS regarde les capacité de WMI et on reparle de COM. C'est la couche basse de windows , pure objet , avec des specication ultra formaté :    http://www.microsoft.com/whdc/system/pnppwr/wmi/default.mspx
("ferrari contre 2cv" , c'est le genre de remarque "karate contre knug-fu". Argumente coco , tu verras sur le terrain, tu va prendre des balles....lol

Quand tu passe par un import de Dll , bien sur que tu attaque directement la DLL , mais tu perds tout le travail Microsoft effectué en amont , batterie de test , gestion des exceptions , optimisation ,  evolution continue du framework (comme on l'a (enfin) aujourd'hui entre le 2.0 et le 3.O et les suivante.....) et du code pourri moche à souhait, figé, non évolutif, avec de pointeurs (et non des deleguatye qui sont géré par la CLI/CLR eux !!!)

t'as juste fais une encapsulation bidon, on appelle cela un bouchon.

moi j'appele cela de la bidouille .... quelque chose à ajouter ?

A mon sens c'est une critique qui est constructive , j'aurais aimé avoir un code C# Framework 2.0 bien propre pour l'integrer dans mes snippets , mais la je fait même pas un copier/coller.

Pour finir la derniere couche : regarder a cette adresse : http://www.ks-soft.net/hostmon.eng/wmi/index.htm
Super soft pour avoir le detail des classe WMI installé sur votre machine avec détail.(cela vous donne les Method et propertie pour System.Management)

je vous posterai un petit utilitaire qui genère du code C# à partir de WMI (avec la classe system.management ) , et la ça mettera tout le monde d'accord : badrbadr t'auras plus qu'à chercher la propriété qui controle l'écran .

Après ce que j'en dit , continuez à faire de l'interopérabilté moi je me concentre sur C# (uniquement) ça me permet de participer à des projet vraiment super .....

Alllez jeunesse .... bonne nuit


Commentaire de BruNews le 13/12/2007 11:07:41 administrateur CS

Mais c'est quoi tout ce verbiage ?
Un prog user mode (interprété tel que C# ou du natif) n'accèdera à WMI que par COM, inutile de disserter là dessus, c'est by design WMI.

Les capacités de COM et WMI:
COM est le chargeur, il ne contient aucun code de méthode ou propriété donc rien à comparer. Savoir donc si WMI fait plus ou moins que COM, là oui que c'est con comme idée.
Une couche basse en pur objet, là c'est un non sens absolu. WMI est kernel mode, la POO n'a pas sa place à ce niveau, aucune couche d'abstraction possible, c'est du code driver pur et dur. Il se trouve que j'en écris, je dois donc un peu savoir de quoi je parle. Je te précise pour clore ce débat que je faisais l'exposition des sources Windows (TOUS) sur le stand MS au salon Linux 2005 sur MON portable, c'est donc que je les ai.

Specication ultra formaté: ni plus ni moins que toutes les fonctions API sinon aucun prog ne tournerait. Appeler directement une API est le contraire d'une encapsulation, c'est la ligne droite menant au but.

Commentaire de admin771 le 30/08/2009 18:39:58

bonjour,
j'aimerai utilisé le programme que tu a créé, donc j'ai telechargé le fichier zip, sauf que je ne trouve pas le fichier .exe
que dois-je faire ?
et merci beaucoup

Commentaire de badrbadr le 30/08/2009 18:44:59

Télécharge Visual Studio C# Express Edition, et compile le projet.
Ensuite execute-le.

Commentaire de admin771 le 31/08/2009 15:54:57

Merci beaucoup, ça marche =)
par contre, ça ne modifie pas la luminosité sur les videos (VLC) c'est normal ?

 Ajouter un commentaire


Discussions en rapport avec ce code source dans le forum

un bon livre sur l'API win32 [ par nicolaslepot ] Salut,Je suis à la recherche d'un cours qui explique les principales fonctions de l'api win32 pour winXP et win2003. Un bon livre ou un bon pdf. Je ne Modifier la luminosité et le contraste de l'écran [ par Lepripri ] Bonjour,je souhaiterais savoir s'il est possible de modifier le contraste et la luminosité de l'écran sans passer par les touches placées sur l'écran WinFX vs Win32 [ par badrbadr ] Salut chers .Netiens; Apr&#232;s avoir essayer plusieurs langages de programmation et plusieurs API, j&#146;ai fini par trouver ma plateforme de r&#23 API win32 et C# [ par sokotanic ] salut j'aimerai utilise API WIN32 en visual studio C# comment je peux le faire ? merci avance this.height plus grand que l'écran impossible ... BUG? [ par Booster ] Bonjour à tous, J'ai un problème avec la taille d'une Form. J'ai besoin que ma form soit PLUS grande que mon ecran. Je fais donc ceci : this.Weigth imprimer un windows form dynamique sans capture d'écran [ par houcem001 ] Salut. j'ai un windows form de taille dynamique("DEVIS") contenant le nom de la societe, le code tva et d'autre variable en haut de la page puis une generation d'un document word sans les api microsoft [ par Hanyas ] Bonjour je suis actuellement a la recherche de différant moyen pour générai des document de type .doc ; malheureusement mes recherche je trouve un p comment obtenir la documentation SDK de C#2.0 [ par alecccc ] BonjourEn fait je cherche à avoir la liste de toutes les classes,methodes bref la documentation de l'API C#2.O comme on l'a en java (http://java.sun.c Plein-écran : réaction bizarre ? [ par bubbathemaster ] J'ai une application qui est sensé se mettre en plein écran via ce ptit code :FullScreen est une variable globale de type boolean qui determine si l'a


Nos sponsors


Sondage...

CalendriCode

Février 2010
LMMJVSD
1234567
891011121314
15161718192021
22232425262728

Consulter la suite du CalendriCode

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,484 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales