Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

Sujet : Savoir si une application est lancé [ Système / Exécution ] (Oniria)

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é 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 CODE SOURCE DEELPHI POUR DEVELOPPER UNE APPLICATION GESTION DU PERSONNEL [ par NANOU2006 ] BONJOUR TOUT LE MONDEJE VOUDRAIS UNE AIDE SUR DELPHI POUR DEVELOPPER UNE APPLICATION DE GESTION DU PERSONNEL SI VOUZ AURIEZ UN CODE SOURCE JE SERAIS R 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

Juillet 2009
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
2728293031  

Consulter la suite du CalendriCode

Téléchargements

Logiciels à télécharger sur le même thème :

Comparez les prix Nouvelle version

Photothèque Nouveau !



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
Temps d'éxécution de la page : 0,437 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS


Certaines images présentes sur le site (notament certains avatars) sont issues des collections IconShock, donc si vous souhaitez utiliser ces icons vous devez les acheter, ne les copiez pas et ne utilisez pas dans vos sites et applications sans les avoir commandé.