[D6] CreateToolhelp32Snapshot sur Terminal Server
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:
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; |