[wd] [API]

Le
VPSoft
Bonsoir,

J'ai un programme (exécutable WD) qui peut être lancé plusieurs fois sur un
même poste par un même user.
Je cherche un élément déterminant précisément "qui je suis".
J'ai donc pensé au N° PID renvoyé par le gestionnaire des tâches de Windows.

Avec l'API PSAPI.DLL","EnumProcesses" etc.. j'arrive à récupérer la liste
des process en cours, mais je retrouve toujours le même N° si le prog est
lancé plusieurs fois puisque le prog se retrouve plusieurs fois avec le même
nom dans la liste des process.

Est-ce qu'il y aurait un autre élément me permettant de savoir, dans la
liste des process, quel est celui qui correspond au programme en cours ?

Toute aide serait la bienvenue.

Merci d'avance,

Victor
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses Page 1 / 2
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
MiF
Le #14612131
VPSoft a écrit :
Bonsoir,

J'ai un programme (exécutable WD) qui peut être lancé plusieurs fois sur un
même poste par un même user.
Je cherche un élément déterminant précisément "qui je suis".
J'ai donc pensé au N° PID renvoyé par le gestionnaire des tâches de Windows.

Avec l'API PSAPI.DLL","EnumProcesses" etc.. j'arrive à récupérer la liste
des process en cours, mais je retrouve toujours le même N° si le prog est
lancé plusieurs fois puisque le prog se retrouve plusieurs fois avec le même
nom dans la liste des process.

Est-ce qu'il y aurait un autre élément me permettant de savoir, dans la
liste des process, quel est celui qui correspond au programme en cours ?

Toute aide serait la bienvenue.

Merci d'avance,

Victor






Bonjour,

La fonction Instance() devrait faire le boulot...

MiF
VPSoft
Le #14612121
Bonjour,

Merci pour l'info, mais malheureusement c'est le même problème : Même numéro
si 2 instances du même prog.

C'est d'ailleurs indiqué dans la doc en ligne, ce qui confirme que ce n'est
pas moi qui me trompe.

Merci tout de même.

Une autre idée ?

Victor

"MiF" 46de3f61$0$25935$
VPSoft a écrit :
Bonsoir,

J'ai un programme (exécutable WD) qui peut être lancé plusieurs fois sur
un même poste par un même user.
Je cherche un élément déterminant précisément "qui je suis".
J'ai donc pensé au N° PID renvoyé par le gestionnaire des tâches de
Windows.

Avec l'API PSAPI.DLL","EnumProcesses" etc.. j'arrive à récupérer la
liste des process en cours, mais je retrouve toujours le même N° si le
prog est lancé plusieurs fois puisque le prog se retrouve plusieurs fois
avec le même nom dans la liste des process.

Est-ce qu'il y aurait un autre élément me permettant de savoir, dans la
liste des process, quel est celui qui correspond au programme en cours ?

Toute aide serait la bienvenue.

Merci d'avance,

Victor






Bonjour,

La fonction Instance() devrait faire le boulot...

MiF


patrice
Le #14612111
c'est étonnant
la doc indique que EnumProcesses renvoi des process id, donc directement la
valeur de la colonne PID du gestionnaire de tache.
et quand on lance deux soft, le pid est différent
donc si EnumProcesses renvoi deux valeur identiques, est-ce qu'il y n'y
aurait pas une couille dans la lecture des résultats de l'appel de
EnumProcesses ?

"VPSoft" news:46ddcd63$0$27374$
Bonsoir,

J'ai un programme (exécutable WD) qui peut être lancé plusieurs fois sur


un
même poste par un même user.
Je cherche un élément déterminant précisément "qui je suis".
J'ai donc pensé au N° PID renvoyé par le gestionnaire des tâches de


Windows.

Avec l'API PSAPI.DLL","EnumProcesses" etc.. j'arrive à récupérer la liste
des process en cours, mais je retrouve toujours le même N° si le prog est
lancé plusieurs fois puisque le prog se retrouve plusieurs fois avec le


même
nom dans la liste des process.

Est-ce qu'il y aurait un autre élément me permettant de savoir, dans la
liste des process, quel est celui qui correspond au programme en cours ?

Toute aide serait la bienvenue.

Merci d'avance,

Victor





Romain PETIT
Le #14612101
Il se trouve que VPSoft a formulé :
Bonsoir,



Salut,

Est-ce qu'il y aurait un autre élément me permettant de savoir, dans la liste
des process, quel est celui qui correspond au programme en cours ?



Voir avec CreateToolhelp32Snapshot ?
http://msdn2.microsoft.com/en-us/library/ms686313.aspx
http://centrewd.free.fr/?page=ficheapi&t=f&n=CreateToolhelp32Snapshot

A+

--
Romain PETIT
http://cerbermail.com/?O16kfXOFcq
(cliquez sur le lien ci-dessus pour me contacter en privé)
VPSoft
Le #14612091
"patrice" news: 46dec64c$0$18116$
c'est étonnant
la doc indique que EnumProcesses renvoi des process id, donc directement
la
valeur de la colonne PID du gestionnaire de tache.
et quand on lance deux soft, le pid est différent
donc si EnumProcesses renvoi deux valeur identiques, est-ce qu'il y n'y
aurait pas une couille dans la lecture des résultats de l'appel de
EnumProcesses ?



Salut,

EnumProcess renvoie une liste.
Dans la liste, il y a 2 fois (ou plus) le même nom de process avec bien des
N° différents.

La question est de savoir lequel est celui du programme en cours (le même
prog peut être lancé n fois par le même user)

Merci de t'être penché sur la question

Victor
VPSoft
Le #14612071
"Romain PETIT"
Il se trouve que VPSoft a formulé :
Bonsoir,



Salut,

Est-ce qu'il y aurait un autre élément me permettant de savoir, dans la
liste des process, quel est celui qui correspond au programme en cours ?



Voir avec CreateToolhelp32Snapshot ?
http://msdn2.microsoft.com/en-us/library/ms686313.aspx
http://centrewd.free.fr/?page=ficheapi&t=f&n=CreateToolhelp32Snapshot





Salut,

Merci d'avoir répondu.

Si j'ai bien compris, c'est à peu près pareil : soit ça renvoie le N° de
process à partir du nom (en gros), soit ça renvoie le nom si on indique N°
process = 0

Comme c'est en anglais, je prendrai le temps de relire plus tard, si je n'ai
pas trouvé d'autre solution.

En tout cas, merci pour la piste.

Victor
patrice
Le #14612061
"VPSoft" news:46ded22f$0$27391$
La question est de savoir lequel est celui du programme en cours (le même
prog peut être lancé n fois par le même user)




c'est celui qui vaut :
DWORD GetCurrentProcessId(VOID)
Romain PETIT
Le #14612051
VPSoft a formulé ce mercredi :

Comme c'est en anglais, je prendrai le temps de relire plus tard, si je n'ai
pas trouvé d'autre solution.



Suis le 2nd lien pour tester plus rapidement :-) ...

A

--
Romain PETIT
http://cerbermail.com/?O16kfXOFcq
(cliquez sur le lien ci-dessus pour me contacter en privé)
MiF
Le #14612041
> Merci pour l'info, mais malheureusement c'est le même problème : Même numéro
si 2 instances du même prog.

C'est d'ailleurs indiqué dans la doc en ligne, ce qui confirme que ce n'est
pas moi qui me trompe.





Bonjour,

Tu as raison ! Mea Culpa...

Pourtant, cet autre extrait de la doc (SectionCritiqueDébut) laisse
penser le contraire :

-----------
Nom de la section critique

Les sémaphores, sections critiques et signaux sont des objets du système
identifiés par leur nom.

Ils sont donc partagés entre toutes les applications qui s'exécutent sur
un poste.

Deux applications (ou deux instances de la même application) utilisent
donc les mêmes objets si elles utilisent le même nom.

Pour créer des noms uniques, utilisez par exemple la fonction Instance
pour mettre en place le nom voulu.
----------------

La prudence est donc de mise quand on lit la doc...

MiF
VPSoft
Le #14612031
Effectivement, mais IL ME SEMBLE que c'est à peu près la même chose...

J'aurai plus de temps demain. Je chercherai.
Par contre, je traiterai d'abord la dernière piste fournie par Patrice :

c'est celui qui vaut :
DWORD GetCurrentProcessId(VOID)

Encore merci à tous,

Victor

"Romain PETIT"
VPSoft a formulé ce mercredi :

Comme c'est en anglais, je prendrai le temps de relire plus tard, si je
n'ai pas trouvé d'autre solution.



Suis le 2nd lien pour tester plus rapidement :-) ...

A

--
Romain PETIT
http://cerbermail.com/?O16kfXOFcq
(cliquez sur le lien ci-dessus pour me contacter en privé)




Publicité
Poster une réponse
Anonyme