begin process at 2010 02 10 07:43:57
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Applications

 > COMPTEURPROCESSUS : CONTROLER LA DUREE D'UTILISATION D'UNE APPLICATION PAR SON PROCESSUS

COMPTEURPROCESSUS : CONTROLER LA DUREE D'UTILISATION D'UNE APPLICATION PAR SON PROCESSUS


 Information sur la source

Note :
9 / 10 - par 2 personnes
9,00 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10
Catégorie :Applications Source .NET ( DotNet ) Classé sous :compteur, processus, utilisation, application Niveau :Initié Date de création :08/03/2005 Vu :5 988

Auteur : zinzin61

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

 Description

Cette classe "CompteurProcessus" permet de contrôler le lancement, l'arrêt d'une application (quelconque) par un utilisateur de la machine, et d'en ressortir le temps d'utilisation de celle-ci.
Elle fonctionne à l'aide d'événements 'LancementApplication' et 'ArretApplication'

Source

  • using System;
  • using System.Windows.Forms;
  • using System.Diagnostics;
  • using System.Threading;
  • namespace testClasseProcess
  • {
  • /*
  • Cette classe permet de contrôler l'utilisation d'une application en passant le nom
  • de son processus en paramètre
  • Elle possède des événements liés au démarrage de l'application (LancementApplication)
  • et à son arrêt (ArretApplication)
  • Elle nous informe de la durée d'utilisation de l'application
  • */
  • public class CompteurProcessus
  • {
  • private Thread threadProcessus; // thread qui va contenir la procédure de contrôle
  • private bool stop = false; // booleen qui permet ou non l'accès à la boucle de contrôle
  • private bool heureDebutBloquee = false; // bloquage de l'heure de lancement de l'application dans la boucle
  • private bool heureFinBloquee = true; // bloquage de l'heure d'arret de l'application dans la boucle
  • private DateTime heureDebut; // récupération de l'heure de lancement de l'appliation
  • private TimeSpan totalTemps; // tps total -> diff. entre heure de début et fin
  • private string nomApplication; // nom de l'application (processus) à surveiller
  • private int NombreProcessus; // nombre de processus actifs sur la machine
  • private decimal tpsUtilisation; // durée d'utilisation de l'application
  • // evennements de contrôle
  • public event EventHandler LancementApplication;
  • public event EventHandler ArretApplication;
  • public CompteurProcessus()
  • {
  • }
  • public decimal DureeLancement
  • {
  • get {return tpsUtilisation;}
  • }
  • public int NombreProcessusActifs
  • {
  • get {return NombreProcessus;}
  • }
  • public void Start(string nomProcessus)
  • {
  • nomApplication = nomProcessus;
  • threadProcessus = new Thread(new ThreadStart(ecouteProcessus));
  • threadProcessus.Start();
  • }
  • public void Stop()
  • {
  • threadProcessus.Abort();
  • threadProcessus = null;
  • }
  • private void ecouteProcessus()
  • {
  • while (!stop)
  • {
  • // récupération des processus actifs sur la machine dans tabProcess
  • Process[] tabProcess = Process.GetProcesses();
  • NombreProcessus = tabProcess.Length;
  • // initialisation du test d'activité du programme a controler (NomApplication)
  • bool actif = false;
  • // test d'activité
  • foreach (Process unProcessus in tabProcess)
  • {
  • // si il figure dans la liste -> il est actif
  • if (unProcessus.ProcessName.ToLower() == nomApplication.ToLower())
  • actif = true;
  • }
  • // si le programme tourne
  • if (actif)
  • {
  • // si il vient d'être lancé -> heure de début non bloquée
  • // (on entre qu'une seule fois dans cette boucle)
  • if (!heureDebutBloquee)
  • {
  • // on récupère l'heure de début
  • heureDebut = DateTime.Now;
  • // on bloque l'acces a cette boucle
  • heureDebutBloquee = true;
  • // on débloque l'acces a la boucle d'heure de fin
  • heureFinBloquee = false;
  • // evennement déclenché lorsque l'application démarre
  • LancementApplication(this,EventArgs.Empty);
  • }
  • }
  • // si le programme ne tourne pas (ou plus)
  • else
  • {
  • // si il était lancé et vient d'être arrêté
  • // (on entre qu'une seule fois dans cette boucle)
  • if (!heureFinBloquee)
  • {
  • // on calcule la différence entre l'heure du lancement et l'heure actuelle
  • totalTemps = DateTime.Now.Subtract(heureDebut);
  • // on bloque l'acces à cette boucle
  • heureFinBloquee = true;
  • // on débloque l'acces à la boucle d'heure du lancement
  • heureDebutBloquee = false;
  • // le temps de l'utilisation du programme (en secondes) est converti en decimal
  • tpsUtilisation = decimal.Round(Decimal.Parse(totalTemps.TotalSeconds.ToString()),0);
  • // evennement déclenché lorsque l'application s'arrête
  • ArretApplication(this,EventArgs.Empty);
  • }
  • }
  • }
  • }
  • }
  • }
using System;
using System.Windows.Forms;
using System.Diagnostics;
using System.Threading;


namespace testClasseProcess
{

	/*
	Cette classe permet de contrôler l'utilisation d'une application en passant le nom 
		de son processus en paramètre
	Elle possède des événements liés au démarrage de l'application (LancementApplication)
		et à son arrêt (ArretApplication)
	Elle nous informe de la durée d'utilisation de l'application
	*/

	public class CompteurProcessus
	{

		private Thread threadProcessus;    // thread qui va contenir la procédure de contrôle
		private bool stop = false;     // booleen qui permet ou non l'accès à la boucle de contrôle
		private bool heureDebutBloquee = false;  // bloquage de l'heure de lancement de l'application dans la boucle
		private bool heureFinBloquee = true;  // bloquage de l'heure d'arret de l'application dans la boucle
		private DateTime heureDebut;    //  récupération de l'heure de lancement de l'appliation
		private TimeSpan totalTemps;    //  tps total -> diff. entre heure de début et fin
		private string nomApplication;  //  nom de l'application (processus) à surveiller
		private int NombreProcessus;    //  nombre de processus actifs sur la machine
		private decimal tpsUtilisation;  // durée d'utilisation de l'application

		// evennements de contrôle
		public event EventHandler LancementApplication;
		public event EventHandler ArretApplication;
		
 



		public CompteurProcessus()
		{

		}





		public decimal DureeLancement
		{
			get {return tpsUtilisation;}
		}

		public int NombreProcessusActifs
		{
			get {return NombreProcessus;}
		}




		public void Start(string nomProcessus)
		{
			nomApplication = nomProcessus;
			threadProcessus = new Thread(new ThreadStart(ecouteProcessus));
			threadProcessus.Start();
		}

		public void Stop()
		{
			threadProcessus.Abort();
			threadProcessus = null;
		}

		private void ecouteProcessus()
		{
			while (!stop)
			{
				// récupération des processus actifs sur la machine dans tabProcess
				Process[] tabProcess = Process.GetProcesses();
				NombreProcessus = tabProcess.Length;
				// initialisation du test d'activité du programme a controler (NomApplication)
				bool actif = false;
				// test d'activité
				foreach (Process unProcessus in tabProcess)
				{
					// si il figure dans la liste -> il est actif
					if (unProcessus.ProcessName.ToLower() == nomApplication.ToLower())
						actif = true;	
				}
				
				// si le programme tourne
				if (actif)
				{
					// si il vient d'être lancé -> heure de début non bloquée
					// (on entre qu'une seule fois dans cette boucle)
					if (!heureDebutBloquee)
					{
						// on récupère l'heure de début
						heureDebut = DateTime.Now;
						// on bloque l'acces a cette boucle
						heureDebutBloquee = true;
						// on débloque l'acces a la boucle d'heure de fin
						heureFinBloquee = false;

						// evennement déclenché lorsque l'application démarre
						LancementApplication(this,EventArgs.Empty);
					}
				}
				// si le programme ne tourne pas (ou plus)
				else
				{
					// si il était lancé et vient d'être arrêté
					// (on entre qu'une seule fois dans cette boucle)
					if (!heureFinBloquee)
					{
						// on calcule la différence entre l'heure du lancement et l'heure actuelle
						totalTemps = DateTime.Now.Subtract(heureDebut);
						// on bloque l'acces à cette boucle
						heureFinBloquee = true;
						// on débloque l'acces à la boucle d'heure du lancement
						heureDebutBloquee = false;
						// le temps de l'utilisation du programme (en secondes) est converti en decimal
						tpsUtilisation = decimal.Round(Decimal.Parse(totalTemps.TotalSeconds.ToString()),0);
						
						// evennement déclenché lorsque l'application s'arrête
						ArretApplication(this,EventArgs.Empty);
					}
				}
			}
		}
	}
}

 Conclusion

on récupère la durée d'utilisation sur lévennement 'ArretApplication' grace à la propriété 'DureeLancement'


 Sources de la même categorie

Source avec Zip Source avec une capture Source .NET (Dotnet) RECHERCHE ET GESTION DE FICHIERS PERSONNALISÉES par JeremyLecouvert
Source avec une capture DEFORMÉE D'UNE POUTRE par keiz
Source avec Zip Source avec une capture OUTLOOK RESILIENCY CLEANER par Safti
Source avec Zip Source avec une capture Source .NET (Dotnet) COLORCOMBOBOX, COMBO BOX PERMETTANT DE SÉLECTIONNER DES COUL... par manshivas
Source avec Zip Source avec une capture Source .NET (Dotnet) YREGEXTER - THE REGEX TESTER par pysco68

 Sources en rapport avec celle ci

Source avec Zip Source avec une capture Source .NET (Dotnet) LANCEUR POUR WORLD OF WARCRAFT par xmox667
Source avec Zip Source .NET (Dotnet) INSTANCE UNIQUE + COMMUNICATION DE MESSAGES (COMPATIBLE 32 E... par taupe4
Source avec Zip Source avec une capture Source .NET (Dotnet) TETRIS.NET par hamed92
Source avec Zip Source .NET (Dotnet) CLASSE POUR INTERAGIR AVEC UNE APPLICATION ET LE REGISTRE : ... par bernie666
Source .NET (Dotnet) LANCER UN EXE / FICHIER par coq

Commentaires et avis

Commentaire de tmcuh le 10/03/2005 09:09:40

lol le code à l'air bien, mais utile, reste à prouver... Je suis toujours content de savoir le temps que j'ai passé sur une application :).. d'autant que si le prog plante, la donnée est perdu... je te met 9 car pour j'ai pas trouvé d'utilité ;)

Bonne prog.
Amicalement tmcuh

 Ajouter un commentaire


Discussions en rapport avec ce code source dans le forum

Ouverture multiple fichiers pr 1 seul processus [ par Blacknight91 ] Bl@cknightBonjour,J'ai une application pouvant recevoir en argument un chemin d'un fichier.J'ai fait l'association extension de fichier <-> mon Compteur de performance process ? [ par sahliali ] salut j'ai codé un code qui sert à tester si mon application est en cours d'exécution mais j'ai eu une exception qui me dit :"Impossibl Utilisation dll C/C++ en C# [ par garcimor59 ] Bonjour tout le monde,Bon voilà j'ai mon probleme : J'ai une DLL faite en C/C++, et j'aimerais pouvoir faire appelle à des fonctions contenus dans cet Controler le pointeur d'un processus afin d'écrire dans une application externe. [ par micam ] Bonjour, voici une petit problème pour les gros barbus du C#.Je chercher à écrire dans le focus depuis mon applicaiton C# qui tourne en tache de fond. Domaine d'application vs Processus [ par t00f ] Bonjour à tous, Je suis actuellement en train de réaliser une application perso et j'ai du mal à comprendre ce qu'est réellement un domaine d'applicat Utilisation dynamique de DLL. [ par t00f ] Bonjour à tous,Je me tourne vers vous pour avoir un conseil bien précis. Je cherche à développer une application qui peut être enrichie à l'aide de "p utilisation cpu par processus [ par Adidas2 ] Salut tous le mondeJe cherche à obtenir l'utilisation CPU de chaque processus lancé quelqu'un aurait une idée de la fonction à utiliser svp ?Langage : la fermeture d'une application qui lance plusieurs processus en C# [ par mounal ] Sltje veux savoir comment faire pr fermer une application C# qui lance plusieurs processus qui sont des fenetres qui s'ouvrent. quand je fais"applicat Utilisation de l'application sur un compte utilisateur [ par GBadry ] Bonsoir les amis,j'ai développé un petit logiciel sur C# pour un client qui doit l'utiliser sur différents postes.dans cette application j'ai recours utilisation d'une session en C# [ par THRILLERD ] salut les mec! J'aimerais savoir quelque chose! En fait je suis nouveau en C# et je suis entrain de concevoir une application Winforms. J'aimerais sav


Nos sponsors


Sondage...

Comparez les prix

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,889 sec (4)

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