OpenProcess [Résolu]

Messages postés
117
Date d'inscription
vendredi 5 novembre 2004
Dernière intervention
15 janvier 2013
- - Dernière réponse : NeoUmbrella
Messages postés
117
Date d'inscription
vendredi 5 novembre 2004
Dernière intervention
15 janvier 2013
- 5 janv. 2005 à 21:56
Salut , j'aimerais savoi comment faire pour ouvrir un processus de la maniere

suivante :
(hList contient l'handle d'une listbox d'une autre application)

unsigned long cProcess;

sThread = GetWindowThreadProcessId(hListBox, &cProcess);
mThread = OpenProcess(PROCESS_ALL_ACCESS, false, cProcess);

Mais j'arrive pas il y'a tout le temps une erreure.
Pouvez vous m'aider ?

NeoUmbrella Corp.
Afficher la suite 

Votre réponse

11 réponses

Meilleure réponse
Messages postés
2070
Date d'inscription
mardi 22 avril 2003
Dernière intervention
3 juillet 2006
3
Merci
Oui car en VB il y a tellement d'autre trucs qui tournent en même temps que les handles ne sont pas les mêmes que dans un prog Win32 simple (il y en a sans doute plus d'ouverts). Mais du moment que OpenProcess ne renvoi pas NULL, c'est bon tu poura l'utiliser dans les fonctions demandant ce hProcess. De plus, si le PID du process a une signification pour l'ensemble des processus du système, le handle donné par OpenProcess n'aura qu'une signification que pour le process appelant (et ses futurs descendant si tu as ajouté l'option bIniherit).

Merci ymca2003 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources a aidé 97 internautes ce mois-ci

Commenter la réponse de ymca2003
Messages postés
117
Date d'inscription
vendredi 5 novembre 2004
Dernière intervention
15 janvier 2013
0
Merci
En fait j'ecris ca :

long mThread;
unsigned long cProcess,sThread;

sThread = GetWindowThreadProcessId(hListBox, &cProcess);
mThread = (long)OpenProcess(PROCESS_ALL_ACCESS, true, cProcess);

sThread me donne la bonne valeure.
Mais mon probleme se situe au niveau de mThread qui me donne tout le temps
2000, je ne comprends pas pourquoi.

Heeelp meee plzzzz

NeoUmbrella Corp.
Commenter la réponse de NeoUmbrella
Messages postés
2070
Date d'inscription
mardi 22 avril 2003
Dernière intervention
3 juillet 2006
0
Merci
Si OpenProcess ne te renvoi pas NULL, c'est que c'est bon. La valeur en elle-même du HANDLE retourné (nomme le hProcess, plutôt que mThread) n'a aucune signification particulière (sauf pour le système) et peut très bien être la même quel que soit le PID.
Commenter la réponse de ymca2003
Messages postés
117
Date d'inscription
vendredi 5 novembre 2004
Dernière intervention
15 janvier 2013
0
Merci
Pourtant de cette maniere (vb):

Dim cProcess As Long, sThread As Long, mThread As Long

sThread = GetWindowThreadProcessId(rList, cProcess)
mThread = OpenProcess(PROCESS_READ Or RIGHTS_REQUIRED, False, cProcess)

J'arrive a recupere une autre valeure que 2000 et qui change a chaque fois.

NeoUmbrella Corp.
Commenter la réponse de NeoUmbrella
Messages postés
2070
Date d'inscription
mardi 22 avril 2003
Dernière intervention
3 juillet 2006
0
Merci
Peut-être mais comme tu met pas les même paramètres à OpenProcess, ça va être dur de comparer...
Commenter la réponse de ymca2003
Messages postés
117
Date d'inscription
vendredi 5 novembre 2004
Dernière intervention
15 janvier 2013
0
Merci
Je pense que tu parles de PROCESS_READ Or RIGHTS_REQUIRED
Sachant que leur valeure est :

PROCESS_READ = &H10
RIGHTS_REQUIRED = &HF0000

(&H veut dire que ce sont des nombres hexadecimaux en vb)

Que dois je mettre comme parametre ?

NeoUmbrella Corp.
Commenter la réponse de NeoUmbrella
Messages postés
2070
Date d'inscription
mardi 22 avril 2003
Dernière intervention
3 juillet 2006
0
Merci
J'ai fait quelques tests et en effet j'obtient toujours la même valeur pour le handle (peu importe les paramètres et le PID). Mais ce handle est valide alors on s'en fout un peu d'avoir toujours le même...

Par contre si tu ouvre un autre process en ayant le premier handle d'ouvert, tu doit avoir une autre valeur.

Il ne faut pas oublier que les handles n'ont une signification que pour le système alors il peut nous donner n'importe quoi du moment qu'en interne il sait à quoi cela correspond.
Commenter la réponse de ymca2003
Messages postés
117
Date d'inscription
vendredi 5 novembre 2004
Dernière intervention
15 janvier 2013
0
Merci
Ca serait donc normal qu'avec un code vb j'obtienne 804
et avec ce code la j'obtienne 2000 ?

Car apres je dois utiliser un ReadProcessMemory avec cette handle
comme parametre.

NeoUmbrella Corp.
Commenter la réponse de NeoUmbrella
Messages postés
117
Date d'inscription
vendredi 5 novembre 2004
Dernière intervention
15 janvier 2013
0
Merci
Oki merci beaucoup pour tes explications ymca2003

NeoUmbrella Corp.
Commenter la réponse de NeoUmbrella
Messages postés
117
Date d'inscription
vendredi 5 novembre 2004
Dernière intervention
15 janvier 2013
0
Merci
Heu en fait j'ai un autre probleme,

ReadProcessMemory(&mThread, &itmHold, &Pseudo, 4, rBytes);

rBytes me renvoit toujours 0, sais tu pourquoi ?

NeoUmbrella Corp.
Commenter la réponse de NeoUmbrella
Messages postés
117
Date d'inscription
vendredi 5 novembre 2004
Dernière intervention
15 janvier 2013
0
Merci
Desolé pour la question, jme corrige tout seul ^^'

ReadProcessMemory((LPVOID)mThread, (LPCVOID)itmHold, Pseudo, 4, &rBytes);

Ca marche comme ca ^^

NeoUmbrella Corp.
Commenter la réponse de NeoUmbrella

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.