begin process at 2012 02 04 08:41:58
  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 :6 941

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 GESTION DE TACHES par thebigboss
Source avec Zip Source avec une capture Source .NET (Dotnet) VERIFIER VOTRE CODE RIO (RELEVE IDENTIFIANT OPERATEUR) POUR ... par dodo7263
Source avec Zip Source avec une capture Source .NET (Dotnet) CONTRÔLES : BOUTON, LISTE ET PANNEAU POUR VOS APPLIS par Mokost
Source avec Zip Source .NET (Dotnet) UTILITAIRE SKYDRIVE par MasterShadows
Source avec Zip Source avec une capture Source .NET (Dotnet) GESTIONNAIRE DES TODO DISSEMINES UN PEU PARTOUT DANS VOS COD... par dodo7263

 Sources en rapport avec celle ci

Source avec Zip Source avec une capture Source .NET (Dotnet) VERIFIER VOTRE CODE RIO (RELEVE IDENTIFIANT OPERATEUR) POUR ... par dodo7263
Source avec Zip Source .NET (Dotnet) LA LISTE DES TÂCHES COMME DANS L'ONGLET APPLICATION DU GESTI... par ShareVB
Source avec Zip Source avec une capture Source .NET (Dotnet) PROJECTMANAGER par dodo7263
Source avec Zip Source avec une capture Source .NET (Dotnet) EDITEURXML par dodo7263
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...

CalendriCode

Février 2012
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
272829    

Consulter la suite du CalendriCode

Photothèque

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

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