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 allère d'afficher les processus de TOUTE les sessions Terminal.
Le but final étant que j'aie une liste uniquement des processus ouvert 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'aguiller si il est possible de le faire via cette fonction ou faut-il chercher une autre logique que notre code actuel :
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;
Je vous remercie d'avance pour vos réponses. Bonne fin de journée
CreateToolhelp32Snapshot sur Terminal Server
× Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
× Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.