IdentifiantMot de passe
Loading...
Mot de passe oubli� ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les r�ponses en temps r�el, voter pour les messages, poser vos propres questions et recevoir la newsletter

MFC Discussion :

processus et UC


Sujet :

MFC

  1. #1
    Membre confirm� Avatar de lenouvo
    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    252
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 252
    Par d�faut processus et UC
    bonjour,
    je cherche � savoir quand est-ce qu'un processus n'utilise plus le processeur. (par exemple on voit dans le gestionnaire des taches le pourcentage de processeur utilis�e pour chaque appli qui tourne )

    j'arrive d�j� a lister les processus et � prendre celui que je veux :
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
     
    void ListerProcess(void)
    {
     
    	HANDLE hSnap;
    	PROCESSENTRY32 wEntry;
    	int wIndex;
     
    	// Création d'une photo du système
    	hSnap = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);
    	if(hSnap == (HANDLE)-1)
    	{
    		MessageBox(NULL, TEXT("Erreur !!!"), NULL, MB_OK);
    		return;
    	}
     
    	wEntry.dwSize = sizeof(wEntry);
    	// On liste les process
    	if(Process32First(hSnap, &wEntry) == TRUE)
    	{		
    		while(Process32Next(hSnap, &wEntry)) 
    		{
    			//MessageBox(NULL, wEntry.szExeFile, NULL, MB_OK);
    			if(strcmp(wEntry.szExeFile,"APPLI.EXE")==0){
     
    	//trouver si APPLI.EXE utilise de l'UC
    			}
    		}
    	}
     
    	// On libère le snapshot
    	CloseHandle(hSnap);
    }

  2. #2
    Expert confirm�

    Homme Profil pro
    pdg
    Inscrit en
    Juin 2003
    Messages
    5 756
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 43
    Localisation : France, H�rault (Languedoc Roussillon)

    Informations professionnelles :
    Activit� : pdg

    Informations forums :
    Inscription : Juin 2003
    Messages : 5 756
    Billets dans le blog
    3
    Par d�faut
    Attention avec CreateToolhelp32Snapshot, tu travailles sur un dump, donc le process peut s'�tre termin� entre temps. Cela dit c'est valable tout le temps.
    Une solution simple c'est d'utiliser WaitForInputIdle. A priori si le process ne fait rien c'est qu'il attend que l'utilisateur le sollicite et �a devrait marcher. Sinon c'est � toi � tester r�guli�rement son activit� et � estimer quand c'est qu'il a fini...

  3. #3
    R�dacteur
    Avatar de nico-pyright(c)
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    6 414
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 6 414
    Par d�faut
    Salut, je n'ai pas trop aventur� le sujet, mais je crois qu'il faut aller regarder du cot� des m�thodes PSAPI comme GetProcessMemoryInfo(...) ou bien interroger les APIs natives de ntdll, comme NtQueryInformationProcess (voire ZwQueryInformationProcess)

  4. #4
    Membre confirm� Avatar de lenouvo
    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    252
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 252
    Par d�faut
    oula ca a l'air compliqu�...
    je vais me documenter sur ce que vous m'avez dit et je reviens plus tard

  5. #5
    Membre confirm� Avatar de lenouvo
    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    252
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 252
    Par d�faut
    j'ai d�j� essay� WaitForInputIdle :
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
     
    void ListerProcess(void)
    {
     
    	HANDLE hSnap;
    	PROCESSENTRY32 wEntry;
    	int wIndex;
    	DWORD ProcPid;
    	HANDLE hProc;
     
    	// Création d'une photo du système
    	hSnap = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);
    	if(hSnap == (HANDLE)-1)
    	{
    		MessageBox(NULL, TEXT("Erreur !!!"), NULL, MB_OK);
    		return;
    	}
     
    	wEntry.dwSize = sizeof(wEntry);
    	// On liste les process
    	if(Process32First(hSnap, &wEntry) == TRUE)
    	{		
    		while(Process32Next(hSnap, &wEntry)) 
    		{
    			if(strcmp(wEntry.szExeFile,"APPLI.EXE")==0){
     
    				ProcPid=wEntry.th32ProcessID;
    				hProc = OpenProcess ( PROCESS_ALL_ACCESS, TRUE, ProcPid );
    				if ( !hProc ){
    					MessageBox(NULL, TEXT("Erreur !!!"), NULL, MB_OK);
    					return;
    				}
    				else
    					WaitForInputIdle(hProc,INFINITE); //je sais  pas si ce parametre existe mais il me met pas d'erreur :lol: 			}
    		}
    	}
    	// On libère le snapshot
    	CloseHandle(hSnap);
    }
    c'est pas tr�s concluant

  6. #6
    Expert confirm�

    Homme Profil pro
    pdg
    Inscrit en
    Juin 2003
    Messages
    5 756
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 43
    Localisation : France, H�rault (Languedoc Roussillon)

    Informations professionnelles :
    Activit� : pdg

    Informations forums :
    Inscription : Juin 2003
    Messages : 5 756
    Billets dans le blog
    3
    Par d�faut
    c'est pas tr�s concluant
    Mais encore ?

    PS: il manque des CloseHandle.

  7. #7
    Membre confirm� Avatar de lenouvo
    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    252
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 252
    Par d�faut
    et bien j'entend par l� que ca ne marche pas..
    d'ailleurs j'ai vu sur le site de microsoft :
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
     
    La méthode WaitForInputIdle fonctionne uniquement avec les processus qui possèdent une interface utilisateur.
    mais ceci se trouve dans la partie C# et Visual basic
    mais si c'est aussi le cas en C++, c 'est donc normal que ca ne marche pas dans mon cas

    donc je vais regarder du cot� de nico-pyright(c) maintenant

  8. #8
    Expert confirm�

    Homme Profil pro
    pdg
    Inscrit en
    Juin 2003
    Messages
    5 756
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 43
    Localisation : France, H�rault (Languedoc Roussillon)

    Informations professionnelles :
    Activit� : pdg

    Informations forums :
    Inscription : Juin 2003
    Messages : 5 756
    Billets dans le blog
    3
    Par d�faut
    Oui c'est normal. Cette fonction d�tecte que le programme est bloqu� sur GetMessage. C'est une des principales raisons pour qu'un processus "n'utilise plus le processeur". De quel type de processus s'agit-il ? Que fait-il ? Tu veux attendre qu'il se termine ou d�tecter qu'il ne fasse plus rien, et dans ce cas, dans quelle situtation ne fait-il plus rien ?

  9. #9
    Membre confirm� Avatar de lenouvo
    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    252
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 252
    Par d�faut
    eh bien, en fait lorsque j'envoie quelque chose dans mon presse papier, le processus en question se met � faire un traitement et utilise de l'UC et je cherche � savoir quand ce processus a fini son traitement.
    en sachant que ce processus est independant de mon programme.

  10. #10
    R�dacteur
    Avatar de nico-pyright(c)
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    6 414
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 6 414
    Par d�faut
    et pourquoi � la fin de ton envoi dans le presse papier, tu envoies pas un message � ton application pour dire que t'as fini ?

  11. #11
    Expert confirm�

    Homme Profil pro
    pdg
    Inscrit en
    Juin 2003
    Messages
    5 756
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 43
    Localisation : France, H�rault (Languedoc Roussillon)

    Informations professionnelles :
    Activit� : pdg

    Informations forums :
    Inscription : Juin 2003
    Messages : 5 756
    Billets dans le blog
    3
    Par d�faut
    Comment le processus d�tecte-t-il qu'il y a quelque chose dans le pp ? Comment tu le lances ? Comment il se termine ? Que fait-il apr�s avoir trait� le contenu ?

  12. #12
    Membre confirm� Avatar de lenouvo
    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    252
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 252
    Par d�faut
    et pourquoi � la fin de ton envoi dans le presse papier, tu envoies pas un message � ton application pour dire que t'as fini ?
    et bien le probleme c'est que j'aurai beau envoy� un message au processus pour dire que j'ai fini, je ne sais pas comment ce processus marche et donc il ne reconnaitra pas le message envoy�.

    Comment le processus d�tecte-t-il qu'il y a quelque chose dans le pp ? Comment tu le lances ? Comment il se termine ? Que fait-il apr�s avoir trait� le contenu ?
    ben ca j'en sais rien je le constate juste quand je teste l'application ext�rieur et son processus.
    le processus se lance lorsqu'on ouvre l'appli et il ne se termine pas tant que l'appli est ouverte.

Discussions similaires

  1. Processus paralleles
    Par Lyes dans le forum Threads & Processus
    R�ponses: 4
    Dernier message: 11/02/2003, 13h04
  2. 1 variable pour 2 processus
    Par kacedda dans le forum POSIX
    R�ponses: 2
    Dernier message: 11/02/2003, 06h32
  3. probleme avec les processus
    Par saidi dans le forum Autres �diteurs
    R�ponses: 1
    Dernier message: 05/02/2003, 00h18
  4. [VB6] [Système] Tuer un processus courant
    Par mdoyer dans le forum VB 6 et ant�rieur
    R�ponses: 7
    Dernier message: 22/10/2002, 14h47
  5. R�ponses: 2
    Dernier message: 04/10/2002, 09h13

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo