Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

[wd] [API]

12 réponses
Avatar
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

10 réponses

1 2
Avatar
MiF
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
Avatar
VPSoft
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" a écrit dans le message de news:
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


Avatar
patrice
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" a écrit dans le message de
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





Avatar
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

A+

--
Romain PETIT
http://cerbermail.com/?O16kfXOFcq
(cliquez sur le lien ci-dessus pour me contacter en privé)
Avatar
VPSoft
"patrice" a écrit dans le message de
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
Avatar
VPSoft
"Romain PETIT" a écrit dans le message de news:

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
Avatar
patrice
"VPSoft" a écrit dans le message de
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)
Avatar
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é)
Avatar
MiF
> 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
Avatar
VPSoft
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" a écrit dans le message de news:

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é)




1 2