begin process at 2012 05 28 22:22:44
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Archive C/C++

 > 

Archives

 > 

API

 > 

connaitre le pid à partir du handle d'un processus


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

connaitre le pid à partir du handle d'un processus

jeudi 20 mai 2004 à 16:17:24 | connaitre le pid à partir du handle d'un processus

cosmobob

comment récuperer le pid d'un processus lancé avec shellexecute ? (avec createprocess j'ai fait c'est plus simple)

j'ai utilisé shellexecutex, et avec ca j'ai pu récuperer le handle du processus crée, mais a part de celui ci, comment je trouve le pid ? (sachant ke j'ai trouvé sur msdn une fonction GetProcessId mais qui est implémenté uniquement sur XP SP1, et que mon header windows.h ne contient de toutes facons pas... dc sans doute ya un autre moyen)

il faudrait la fonction 'réciproque' de openprocess. quelqu'un connait ?
jeudi 20 mai 2004 à 17:53:59 | Re : connaitre le pid à partir du handle d'un processus

BruNews

Administrateur CodeS-SourceS
Tu as un hprocess.
Lance EnumWindows.
Dans enumProc a chaque tour:
DWORD pid;
GetWindowThreadProcessId(hwnd, &pid);
h = OpenProcess(..., pid);
if(h) {
CloseHandle(h)
if(h = hprocess) {
YOUPI pid; stop enum;
}
}

ciao...
BruNews, Admin CS, MVP Visual C++
jeudi 20 mai 2004 à 17:54:51 | Re : connaitre le pid à partir du handle d'un processus

BruNews

Administrateur CodeS-SourceS
OUPS, faute de frappe comme d'hab.
if(h == hprocess) {
...

ciao...
BruNews, Admin CS, MVP Visual C++
jeudi 20 mai 2004 à 18:02:55 | Re : connaitre le pid à partir du handle d'un processus

cosmobob

ok merci ;)
jme demandais si yavait moyen de faire autrement mais bon.
la au- ca marche, dc c'est l'essentiel
vendredi 21 mai 2004 à 00:39:21 | Re : connaitre le pid à partir du handle d'un processus

cosmobob

ha ben finalement ca a pas l'air de marcher.
la raison : les handle retournés par OpenProcess sont des trucs temporaires. dc cad qu'un meme processus peut avoir des handle différents, tout dépend du moment ou on ouvre son process. et des processus différents peuvent avoir des meme valeurs de handle... si on a fermé le handle du processus d'avant en tout cas, c'est possible
ex:



void ListerPs()
{
HANDLE hSnapShot;
PROCESSENTRY32 uProcess;
int r;
short PID = 0;

hSnapShot = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS,0);
uProcess.dwSize = (DWORD) sizeof(PROCESSENTRY32);

r = Process32First(hSnapShot, &uProcess);
do {
PID = (short) uProcess.th32ProcessID;

HANDLE hTemp = OpenProcess(PROCESS_ALL_ACCESS, false, (DWORD) PID);

printf("handle : %d pid : %d \n",hTemp,PID);

CloseHandle(hTemp);
r = Process32Next(hSnapShot, &uProcess);
} while ( r );
CloseHandle(hSnapShot);
}

ca affiche la meme valeur de handle pour tous les processus.

Le handle retourné par OpenProcess est un identifiant qui est unique, meme si on ouvre 2 fois le meme process... qd on fait closeHandle, la valeur de ce handle peut etre re aloué pour n'importe quel autre processus.
d'ou le probleme !
vendredi 21 mai 2004 à 00:46:24 | Re : connaitre le pid à partir du handle d'un processus

BruNews

Administrateur CodeS-SourceS
Dans tous les cas, CreateProcess est bien mieux si tu peux l'utiliser.

ciao...
BruNews, Admin CS, MVP Visual C++
vendredi 21 mai 2004 à 12:59:17 | Re : connaitre le pid à partir du handle d'un processus

cosmobob

oué j'ai vu. jme demande meme s'il est possible de récuperer le pid d'un processus lancé avec shellexecute. jpense que c'est possible que ca soit non en tout cas...
vendredi 21 mai 2004 à 14:36:47 | Re : connaitre le pid à partir du handle d'un processus

BruNews

Administrateur CodeS-SourceS
J'ai fait exemple pour qqun dans lequel je lance notepad vide et ensuite dans une EnumWindows je retrouve la fenetre par rapport au pid, je change son titre et je mets du texte dans cette fenetre notepad.
Comme quoi le pid n'a pas change depuis le lancement.
Mets moi un message avec un mail pour t'envoyer exemple si tu veux.

ciao...
BruNews, Admin CS, MVP Visual C++
vendredi 21 mai 2004 à 15:15:35 | Re : connaitre le pid à partir du handle d'un processus

cosmobob

ben c'est sur le pid il change jamais... mais le handle qu'on récupere avec OpenProcess sur un meme pid lui il peut changer. la valeur de ce handle peut meme etre la meme pour des processus différents, il suffit d'avoir fait closehandle entre temps... La je veu pa trouver quelque chose par rapport au pid, je veut l'inverse : trouver le pid a partir d'un handle. ce qui n'a pas l'air possible


Cette discussion est classée dans : partir, handle, connaitre, processus, pid


Répondre à ce message

Sujets en rapport avec ce message

block touche system utile [ par Tautau ] bon j'ai geleré pour trouver tout ca et ce n'est peut etre pas la meilleur facon de le faire mais je vous en fais part //// Ce sont des codes que j'ai Processus & Handle [ par ro0tsman ] Bonjour all,je voudrai savoir s'il est possible de trouver le handle d'une fenêtre à partir de son processus (id) ?Sinon de manière générale, comment obtenir un HWND [ par youpiyoyo ] j'aurai besoin de récupérer un hwndj'ai coder caHANDLE hSnapShot; PROCESSENTRY32 uProcess; bool r; short PID = 0; //variable qui va stocker l'ID du pr fonction GetClipboardData() [ par doggyk ] Bonjour,Je souhaite faire du traitement d'image à partir d'une webcam.Je suis sur plusieurs pistes en même temps et certaines avancent bien (merci à m Lancer un programme et connaitre son Handle [ par highcobra ] Bonjour, je souhaiterais executer un programme externe et récupérer le handle de celui-ci afin de lui envoyer des messages par la suite. Merci pour vo Connaitre les infos d'un processus [ par _brau_ ] Bonjour, je cherche a savoir s'il existe une fonction qui nous permet de connaitre le nom de l'executable qui est lancé. En gros, je fais un programme Nom d'une Font à partir de son handle. [ par HeavenForsaker ] Bonjour, J'aimerai obtenir le nom de la police d'un contrôle Edit d'une application externe à partir de son handle. Pour le handle la fonction est l Petit Programme [ par jarod05 ] Bonjour, Je suis à la recherche d'un code qui me permet :      de lire sur la ligne de commande en utilisant argc et argv le nbre N de processus à cré handle fenetre [ par latisaniere ] Bonjour,Je dois créer sur un clientArea de 800*600, 4 fenêtres à partir d'une source videoA partir de l'acquisition video je fige une image ensuite la Recuperation PID procecuss [ par themaste ] Bonjour a tous!Voila, je suis a la recherche d'un code simple simple pour pouvoir récupérer le PID d'un processus, à partir de son nom.J'aimerais util


Nos sponsors


Sondage...

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

A découvrir



 
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 : 8,081 sec (4)

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