Bonjour,
Déjà désolé si je ne suis pas sur la bonne rubrique du forum, je ne savais pas vraiment ou placer cette requête. Mais comme il s'agit d'une fonction de l'API Windows je me suis permis de mettre ce post ici.
Nous utilisons actuellement sur notre logiciel un bout de code permettant de créer une liste des processus afin de contrôler si un programme est ouvert ou non. Pour créer la liste nous utilisons la fonction windows CreateToolhelp32Snapshot. Le problème apparaît pour les clients étant sur Terminal Server. En effet cette fonction a l'air d'afficher les processus de toutes les sessions Terminal.
Le but final étant que j'aie une liste uniquement des processus ouverts par la session en question (Affichage standard lorsque l'utilisateur accède à son gestionnaire de tâche d'ailleurs). Je n'ai malheureusement rien trouvé sur le net, pourriez-vous m’aiguiller si il est possible de le faire via cette fonction ou faut-il chercher une autre logique que notre code actuel :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31 Function ExeRunning (NomApplication : Ansistring) : Cardinal; Var ProcListExec : TProcessentry32; PrhListExec : Thandle; Flag : boolean; begin Result:=0; ProcListExec.dwSize:=sizeof(ProcListExec); try PrhListExec:=CreateToolhelp32Snapshot(TH32CS_SNAPALL,0); if (PrhListExec <> INVALID_HANDLE_VALUE) then begin Flag:=True; Process32First(PrhListExec,ProcListExec); while Flag = True do begin if (Uppercase(ExtractFileName(ProcListExec.szExeFile)) = Uppercase(ExtractFileName (NomApplication))) then begin Result:=ProcListExec.th32ProcessID; Flag:=False; end else Flag:=Process32Next(PrhListExec,ProcListExec); end; end; finally CloseHandle(PrhListExec); end; end;
Partager