begin process at 2012 02 11 14:14:31
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Delphi

 > 

Système

 > 

Exécution

 > 

Savoir si une application est lancé


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Savoir si une application est lancé

lundi 28 juillet 2008 à 08:26:29 | Savoir si une application est lancé

Oniria

Bonjour,

J'aimerais par mon application si une application particulière est lancé. J'ai cherché sur internet et j'ai obtenu un bout de code utilisant l'unite TlHelp32. Or sous lazarus, je n'ai pas cette unité.

J'ai essayé aussi avec la procedure FindWindows, mais mon application ne voie pas celle que je veux.

 J'ai ensuite cherché sur delphifr et j'ai trouvé le code du
http://www.delphifr.com/codes/LISTEUR-PROCESSUS-CHILDS-KILL-IMPORTE-QUEL-PROCESS-PRIVILEGE_32493.aspx.

Mais j'avoue, je ne comprend pas ce qui permet de lister les processus. J'ai compris que c'était un thread qui le faisait mais comment fait-elle pour lister ???? Là, je ne comprend pas.

Merci pour vos réponses.

Oniria
lundi 28 juillet 2008 à 09:14:37 | Re : Savoir si une application est lancé

Caribensila

Membre Club
Réponse acceptée !

Salut,

C'est grâce à l'API "EnumProcess", non?

lundi 28 juillet 2008 à 11:21:39 | Re : Savoir si une application est lancé

Oniria

Merci pour ta réponse CariBensila. C'est bien cette procedure que l'on peut obtenir la liste des processus. Par contre, on n'a pas le nom de l'application executé (par exemple outlook.exe, on obtient Microsoft Outlook) mais c'est mieux que rien

Pour le gens que ca intérresse le code qui me liste tous mes processus est le suivant :

unit main;

{$mode delphi}
interface

uses
  Classes, SysUtils, LResources, Forms, Controls, Graphics, Dialogs,Windows,
  Buttons, StdCtrls;

type

  { TFMain }

  TFMain = class(TForm)
    B_Quitter: TBitBtn;
    B_Dictionnaire: TBitBtn;
    B_Parametre: TBitBtn;
    Memo1: TMemo;
    procedure B_ParametreClick(Sender: TObject);
    procedure FormCreate(Sender: TObject);
    procedure FormDestroy(Sender: TObject);
  private
    { private declarations }
  public
    { public declarations }
    Liste_Processus : TStringList;
  end;

var
  FMain: TFMain;


implementation

{ TFMain }

// ce code vient de http://delphi.about.com/od/windowsshellapi/l/aa080304a.htm
function EnumProcess(hHwnd: HWND; lParam : integer): boolean; stdcall;
var
  pPid : DWORD;
  title, ClassName : string;
  texte : string;
begin
  //if the returned value in null the
  //callback has failed, so set to false and exit.
  if (hHwnd=NULL) then
  //if (_para1=NULL) then
  begin
    result := false;
  end
  else
  begin
    //additional functions to get more
    //information about a process.
    //get the Process Identification number.
    GetWindowThreadProcessId(hHwnd,pPid);
    //set a memory area to receive
    //the process class name
    SetLength(ClassName, 255);
    //get the class name and reset the
    //memory area to the size of the name
    SetLength(ClassName,GetClassName(hHwnd,PChar(className),Length(className)));
    SetLength(title, 255);
    //get the process title; usually displayed
    //on the top bar in visible process
    SetLength(title, GetWindowText(hHwnd, PChar(title), Length(title)));
    //Display the process information
    //by adding it to a list box
    texte := 'Class Name = ' + className +
       '; Title = ' + title +
       '; HWND = ' +IntToStr(hHwnd) +
       '; Pid = ' + IntToStr(pPid);
    FMain.Liste_Processus.Add(texte);

    Result := true;
  end;
end;

procedure TFMain.FormCreate(Sender: TObject);
var i:integer;
begin
  FMain.Liste_Processus:=TStringList.Create;


   
end;

procedure TFMain.B_ParametreClick(Sender: TObject);
var i : integer;
begin
  FMain.Liste_Processus.Clear;
  if EnumWindows(@EnumProcess,0) = false
     then ShowMessage('Erreur: Impossible de récupérer les informations des processus.');
  FMain.Memo1.Lines.Add('Nb processus actifs ='+inttostr(FMain.Liste_Processus.Count));
  for i:=0 to FMain.Liste_Processus.Count-1 do
    begin
      FMain.Memo1.Lines.Add(FMain.Liste_Processus.Strings[i])
    end;
end;

procedure TFMain.FormDestroy(Sender: TObject);
begin
  FMain.Liste_Processus.Free; // on libére le stringlist contenant les infos des processus
end;

initialization
  {$I main.lrs}

end.            

En tout cas merci Caribensila, ta réponse ma bien aiguillé.

Oniria


Cette discussion est classée dans : application, code, delphifr, cherché, lancé


Répondre à ce message

Sujets en rapport avec ce message

Pb fermeture d'une appli ouverte à partir d'une autre [ par Sandrine ] Bonjour,J'ai une application qui possède un bouton permettant d'ouvrir une deuxième application (qui ne possède qu'une fenêtre affichant du texte cont Tuer une application depuis une autre [ par evolutic ] Bonjour,Je cherche à tuer un processus (du même style que 'terminer le processus' sous le gestionnaire des tâches windows) depuis une appli delphi. Je Application dans un TOLEContainer [ par freud2000 ] Bonjour, j'a créés une application Delphi avec un objet TOLEcontainer qui affiche des documents Word grace à la commande suivante : OleWord.CreateObje Execution d'Application (EXE) [ par MAsterC ] Salut à tous,Avec mon programme je voudrai exécuter un jeux... en appuyant sur un "button"...J'ai essayé avec SHELLAPI, ShellExecute(0,'open' ........ cacher une MDi [ par neko ] Bonjour tout le monde, vala, j'ai un petit probleme avec une form mdi:en effet, mon but est de cacher l'application pour la mettre dans le tray. Chose TTrackBar courbé [ par wyckit ] Bonjour Bonjour amis codeurs !Voila, je suis en association avec un grafiste de ma classe pour faire un lecteur mp3, et ce que je cherche c'est à fair [Application service] Copie de l'executable. [ par kinkey_wizard ] Bonjour tout le monde, comment allez vous ?Voyons, voyons... Oui^^... Je pense être bien au bord du suicide^^...J'ai trouvé cette instruction sur un s Probleme avec TabbedNoteBook et evènement onChange [ par dederfred ] Bonsoir, j'ai un probleme sur un point de mon application .Mon application repose sur un systeme de plusieurs TabbedNoteBook .Je voulais savoir pourqu Icône du .exe [ par kacola ] Bonsoir, je viens de finir un petit code sous Delphi Turbo, mais je n'arrive pas à changer l'icône de base (celui avec la torche bleue).J'ai cherché d


Nos sponsors


Sondage...

CalendriCode

Février 2012
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
272829    

Consulter la suite du CalendriCode

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 5,366 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales