NEO ::: TEAM
Vous souhaitez réagir à ce message ? Créez un compte en quelques clics ou connectez-vous pour continuer.

NEO ::: TEAM

New Evolution Owner
 
AccueilRechercherDernières imagesS'enregistrerConnexion
Le Deal du moment :
Sortie PlayStation 5 Pro : où ...
Voir le deal

 

 Comment savoir si une application est en cours d'exécution ?

Aller en bas 
AuteurMessage
Admin
Fondateur
Fondateur
Admin


Nombre de messages : 197
Age : 40
Localisation : Tlemcen ( Algérie )
Date d'inscription : 04/12/2006

Comment savoir si une application est en cours d'exécution ? Empty
MessageSujet: Comment savoir si une application est en cours d'exécution ?   Comment savoir si une application est en cours d'exécution ? Icon_minitimeVen 12 Jan - 6:18

Pour retrouver le nom d'une application en cours d'exécution on utilisera la fonction CreateToolhelp32Snapshot qui renvoie la liste des process. Ensuite on parcourra cette liste en utilisant la fonction Process32Next qui renvoi les informations d'un process dans un enregistrement de type TProcessentry32:
Code:
[/center]
tagPROCESSENTRY32 = packed record
    dwSize: DWORD;              // taille de l'enregistrement
    cntUsage: DWORD;            // Compteur de référence du process, si zéro le process se termine.
    th32ProcessID: DWORD;        // Identifiant du process
    th32DefaultHeapID: DWORD;    // Identifiant de la pile par défaut du process
    th32ModuleID: DWORD;        // Identifiant du module du process
    cntThreads: DWORD;          // Nombre de thread du process
    th32ParentProcessID: DWORD;  // Identifiant du process parent ( 'son créateur' )
    pcPriClassBase: Longint; // Priorité de base des threads crée par ce process
    dwFlags: DWORD;              // Réservé
    szExeFile: array[0..MAX_PATH - 1] of Char; // le nom de l'exécutable.
  end;[center]
Vous devez ajouter l'unité TLHelp32 dans la clause uses.


Code:




uses TLHelp32;
Code:

function ExeRunning(NomApplication : string; StopProcess:Boolean):Boolean;
//Test si une application est en cours d'exécution
// StopProcess indique si on termine l'application 'NomApplication'

// Code proposé par Thunder_nico

var
  ProcListExec : TProcessentry32;
  PrhListExec : Thandle;
  Continu : Boolean;
  isStarted : Boolean;
  HandleProcessCourant : Cardinal; 
  PathProcessCourant : string;
  ProcessCourant :String;

begin
  // Liste des applications en cours d'exécution
  // Initialisation des variables et récuperation de la liste des process
  ProcListExec.dwSize:=sizeof(ProcListExec);
  Continu := True;
  isStarted := False;

 Try
    // Récupére la liste des process en cours d'éxécution au moment de l'appel
  PrhListExec:=CreateToolhelp32Snapshot(TH32CS_SNAPALL,0);
  if (PrhListExec <> INVALID_HANDLE_VALUE)
    then
    begin
    //On se place sur le premier process
    Process32First(PrhListExec,ProcListExec);

      // Tant que le process recherché n'est pas trouvé et qu'il reste
      // des process dans la liste, on parcourt et analyse la liste
    while Continu do
    begin
      ProcessCourant := Uppercase(ExtractFileName(ProcListExec.szExeFile));
      ProcessCourant := ChangeFileExt(ProcessCourant,'');
      isStarted := (ProcessCourant = Uppercase(NomApplication));
      if isStarted then
        begin
        HandleProcessCourant := ProcListExec.th32ProcessID;
        PathProcessCourant := ExtractFilepath(ProcListExec.szExeFile);
        Continu := False;
        end
      else // Recherche le process suivant dans la liste
        Continu := Process32Next(PrhListExec,ProcListExec);
    end;

    if StopProcess
      then
      if isStarted then
        begin  // Termine le process en indiquant le code de sortie zéro
        TerminateProcess(OpenProcess(PROCESS_TERMINATE,False,HandleProcessCourant),0);
        Sleep(500); // Laisse le temps au process en cours de suppression de s'arrêter
        end;
  end;
 Finally
  CloseHandle(PrhListExec); // Libére les ressources
  Result := isStarted;
 end;
end;
Revenir en haut Aller en bas
https://neo-team.forumactif.com
 
Comment savoir si une application est en cours d'exécution ?
Revenir en haut 
Page 1 sur 1
 Sujets similaires
-
» Comment fermer une application externe ?
» Comment ne pas bloquer une application pendant un traitement
» Comment obtenir le code de sortie de l'application ?

Permission de ce forum:Vous ne pouvez pas répondre aux sujets dans ce forum
NEO ::: TEAM :: Informatique :: Les RADs :: Borland Delphi 4,5,6,7-
Sauter vers:  
Ne ratez plus aucun deal !
Abonnez-vous pour recevoir par notification une sélection des meilleurs deals chaque jour.
IgnorerAutoriser