Recupérér Handle de d'un processus [Résolu]

Messages postés
318
Date d'inscription
samedi 6 mai 2006
Dernière intervention
10 août 2013
- 8 avril 2007 à 12:08 - Dernière réponse :
Messages postés
318
Date d'inscription
samedi 6 mai 2006
Dernière intervention
10 août 2013
- 9 avril 2007 à 02:08
Bonjour

je voudrais recuperer le handle d'un processus active ex :explorer.exe

jai deja un code similaire mais il trouve que le PID a partir du processus

#include <windows.h>
#include <tlhelp32.h>  //th32.lib ou libth32.a
#include <stdio.h>

//---------------------------------------------------
DWORD GetPidByName(char *szProcName)
{
  DWORD dwPID = 0;
  PROCESSENTRY32 pe = {sizeof(PROCESSENTRY32)};
  HANDLE hSnap = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);

  if(hSnap != INVALID_HANDLE_VALUE)
  {
    if(Process32First(hSnap, &pe))
    {
      do
      {
        if(strcmpi(pe.szExeFile, szProcName) == 0)
        {
          dwPID = pe.th32ProcessID;
          break;
        }  
      }
      while(Process32Next(hSnap, &pe));
    }
    CloseHandle(hSnap);
  }
  return dwPID;
}

//---------------------------------------------------
int main(void)
{
  printf("PID = %ld\n", GetByName("explorer.exe"));
  system("pause>nul");
  return 0;
}

Pouriez-vous maider

Kevin
Afficher la suite 

Votre réponse

15 réponses

Meilleure réponse
Messages postés
1910
Date d'inscription
vendredi 18 juin 2004
Dernière intervention
14 novembre 2014
8 avril 2007 à 20:28
3
Merci
Ok, voici un exemple:

    DWORD pid=0;
    DWORD processid=972;
    HWND fenetre=FindWindowEx(0,0,0,0);
    do
    {
        GetWindowThreadProcessId(fenetre,&pid);
        if(pid==processid) SetWindowText(fenetre,"Nouveau titre");
        fenetre=FindWindowEx(0,fenetre,0,0);
    }while(fenetre);

Merci racpp 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 92 internautes ce mois-ci

Commenter la réponse de racpp
Meilleure réponse
Messages postés
1910
Date d'inscription
vendredi 18 juin 2004
Dernière intervention
14 novembre 2014
9 avril 2007 à 01:21
3
Merci
C'est simple. Tu remplaces:
DWORD processid=972;
par:
DWORD processid=GetPidByName("monprogramme.exe");

Merci racpp 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 92 internautes ce mois-ci

Commenter la réponse de racpp
Messages postés
1910
Date d'inscription
vendredi 18 juin 2004
Dernière intervention
14 novembre 2014
8 avril 2007 à 12:31
1
Merci
Salut,
Tu peux utiliser OpenProcess() qui récupère le HANDLE d'un processus à partir de son PID.
Commenter la réponse de racpp
Messages postés
318
Date d'inscription
samedi 6 mai 2006
Dernière intervention
10 août 2013
8 avril 2007 à 12:57
0
Merci
Merci j'essaye et je te tiens au courant
aurais tu un exemple d'utilisation de cette commande stp?

Kevin
Commenter la réponse de kiki67100
Messages postés
1910
Date d'inscription
vendredi 18 juin 2004
Dernière intervention
14 novembre 2014
8 avril 2007 à 13:03
0
Merci
HANDLE hProcess=OpenProcess(PROCESS_QUERY_INFORMATION | PROCESS_VM_READ,0,dwPID);
//...
CloseHandle(hProcess);
Commenter la réponse de racpp
Messages postés
318
Date d'inscription
samedi 6 mai 2006
Dernière intervention
10 août 2013
8 avril 2007 à 13:06
0
Merci
Merci pour ta reponse tres rapide mais je suis vraiment debutant comment puis-je fait pour trouver le HANDLE DE EXPLORER.exe

Merci
Commenter la réponse de kiki67100
Messages postés
1910
Date d'inscription
vendredi 18 juin 2004
Dernière intervention
14 novembre 2014
8 avril 2007 à 13:31
0
Merci
La fonction GetPidByName() mentionnée dans ton code permet de trouver le PID d'un processus à partir de son nom. Elle te retournera le PID correspondant au nom de processus donné en paramètre. OpenProcess() retrouve le HANDLE depuis le PID:
DWORD dwPID=GetPidByName("explorer.exe");
HANDLE hProcess=OpenProcess(PROCESS_QUERY_INFORMATION | PROCESS_VM_READ, 0,dwPID);
//...
CloseHandle(hProcess);
Commenter la réponse de racpp
Messages postés
318
Date d'inscription
samedi 6 mai 2006
Dernière intervention
10 août 2013
8 avril 2007 à 14:40
0
Merci
Merci pour tes reponse tres rapide mais je suis vraiment debutant le code vient pas de moi.
le but rechercher serait de cacher l'explorateur (explorer.exe) puis l'afficher et aussi modifier les titre des fenetre de msn ,iexplorer,ect... via le processus. avec cette commande ShowWindow(hWnd, SW_SHOW);
moi voila je susi bloquer je narrive pas a utiliser la commande OpenProcess

merci

Kevin
Commenter la réponse de kiki67100
Messages postés
318
Date d'inscription
samedi 6 mai 2006
Dernière intervention
10 août 2013
8 avril 2007 à 14:44
0
Merci
Pour avoir le HANDLE du processus apres pour faire ceci
HWND hWnd = FindWindow(0,"notepad.exe");//ceci ne marche pas
SetWindowText(hWnd, "lenouveautitre.");//le nouveau titre
Commenter la réponse de kiki67100
Messages postés
1910
Date d'inscription
vendredi 18 juin 2004
Dernière intervention
14 novembre 2014
8 avril 2007 à 16:08
0
Merci
FindWindow() prend le texte affiché sur la barre de titre comme 2ème paramètre. On ne peut pas lui passer le nom du processus. Il est préférable d'utiliser le 1er paramètre qui est le nom de la classe de fenêtre:
HWND hwndNotepad=FindWindow("notepad",0);
SetWindowText(hwndNotepad,"Nouveau titre");
Pour une fenêtre de l'explorateur, le nom de la classe est CabinetWClass.
Commenter la réponse de racpp
Messages postés
318
Date d'inscription
samedi 6 mai 2006
Dernière intervention
10 août 2013
8 avril 2007 à 17:49
0
Merci
Je me suis mal expliquer dsl

jaimerais lister les fenetre utiliser par un processus exemple msn Messenger
puis recuperer les HANDLE des fenetre pour les modifier ect...
On peut utiliser la commande FindWindow(0,"*MSN"): un truc dans le genre qui permet de prendre tout les fentre commancent par MSN ?

Kevin
Commenter la réponse de kiki67100
Messages postés
1910
Date d'inscription
vendredi 18 juin 2004
Dernière intervention
14 novembre 2014
8 avril 2007 à 19:06
0
Merci
Une fois tu as le PID d'un processus, tu énuméreras toutes les fenêtres du bureau avec FindWindowEx(). Avec GetWindowThreadProcessId() tu obtiens le PID du processus associé à chaque fenêtre. Si égal au premier PID alors la fenêtre appartient au processus voulu.
Commenter la réponse de racpp
Messages postés
318
Date d'inscription
samedi 6 mai 2006
Dernière intervention
10 août 2013
8 avril 2007 à 19:50
0
Merci
Merci de mavoir atant aider pourais tu me montrer un exemple avec le PID numero 972
et lister les fenetre stp apres comme sa je pourais faire un tuto sur les gestion des fenetre

Kevin
Commenter la réponse de kiki67100
Messages postés
318
Date d'inscription
samedi 6 mai 2006
Dernière intervention
10 août 2013
8 avril 2007 à 21:34
0
Merci
MERCI BEAUCOUP
comment puige faire pour mettre la variable GetPidByName en  processid pour
pour remplacer 972 par  GetPidByName("monprograme.exe");
(sa veut la peine que je poste de code en tant que source car je trouve quel et interessent)

MERCI BEAUCOUP [auteurdetail.aspx?ID=295159 racpp]

Kevin
Commenter la réponse de kiki67100
Messages postés
318
Date d'inscription
samedi 6 mai 2006
Dernière intervention
10 août 2013
9 avril 2007 à 02:08
0
Merci
OK merci pour tout

Kevin
Commenter la réponse de kiki67100

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.