IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Delphi Discussion :

Retrouver un programme en cours Tlhelp32


Sujet :

Delphi

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Novembre 2002
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2002
    Messages : 12
    Points : 7
    Points
    7
    Par défaut Retrouver un programme en cours Tlhelp32
    Bonjour à tous,
    J'utilise cette fonction pour vérifier si un "exe" est en cours, celle ci fonctionnait très bien sur des machines en XP et Win7 32 bits mais plus depuis que je suis en 64 bits.
    J'ai chercher un peu partout mais je n'ai pas trouvé d'informations relevant de mon cas.
    J'utilise (toujours) Delphi 5.

    Dans mon Unit j'ai :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    Uses Tlhelp32 //(entre autres)
     
    Implementation
     
    function UpString(Str: string): string;
    var i: integer;
    begin
      result:='';
      for i:=1 to length(str) do
        result:=result+UpCase(str[i]);
    end;
     
    function ProgEnCours(NomProg:string):boolean;
    var
    LPPE : TProcessEntry32;
    H      : Thandle;
     
    begin
      result := false;
     
      H := CreateToolhelp32Snapshot(TH32CS_SNAPALL, 0);
      Lppe.DwSize:=Sizeof(TProcessEntry32);
      if Process32First(h,lppe)
      then
      Begin;
        if  UpString(ExtractFileName(LPPE.szexefile))=UpString(NomProg) then result:=true;
        while Process32next(h,lppe) do
        begin
          if  UpString(ExtractFileName(LPPE.szexefile))=Upstring(NomProg) then result:=true;
        end;
      End;
      Closehandle(h);
    end;
     
    procedure TForm1.test(Sender: TObject);
    begin
    if ProgEnCours(edit1.text)
          then begin
          shape1.Brush.Color:=clgreen;
          end
          else begin
          shape1.Brush.Color:=clred;
          end;
    end;
    Je rentre dans un edit1 le nom d'un programme recherché, exemple : MOM.exe et si le process est présent je passe en vert -> parfait cela fonctionne.
    Si je rentre "K8602.exe" qui est réellement le nom du programme que je cherche -> Rouge !!!!
    La seule chose que je remarque c'est que le nom de l'image dans le "taskmgr" pour K8062e.exe est "K8602e.exe *32", je suppose que c'est parce que c'est un 32bits" !!!
    Est ce que ce serait lié?
    Est ce que vous auriez une astuce ou solution pour régler ce souci?
    Merci d'avance
    Guy

  2. #2
    Membre expert
    Avatar de Charly910
    Homme Profil pro
    Ingénieur TP
    Inscrit en
    Décembre 2006
    Messages
    2 344
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur TP
    Secteur : Bâtiment Travaux Publics

    Informations forums :
    Inscription : Décembre 2006
    Messages : 2 344
    Points : 3 122
    Points
    3 122
    Par défaut
    Bonjour,
    je suis en W10 64bits et chez moi ton code fonctionne bien. Par exemple je détecte Delphi32.exe (qui est afficher Delphi32.exe dans Taskmgr.exe - pas de *32* ??)

    J'ai testé en D7 si besoin je peux aussi le faire en D10.3 ?

    A+
    Charly

  3. #3
    Futur Membre du Club
    Profil pro
    Inscrit en
    Novembre 2002
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2002
    Messages : 12
    Points : 7
    Points
    7
    Par défaut
    Citation Envoyé par Charly910 Voir le message
    Bonjour,
    je suis en W10 64bits et chez moi ton code fonctionne bien. Par exemple je détecte Delphi32.exe (qui est afficher Delphi32.exe dans Taskmgr.exe - pas de *32* ??)

    J'ai testé en D7 si besoin je peux aussi le faire en D10.3 ?

    A+
    Charly
    Bonjour,
    Merci pour cette information, pour ma part je suis en(core) en Win7 64bits.
    As tu regardé via le taskmgr si tu as des "images" en *32 et vérifié si cela fonctionne?
    Merci d'avance,
    Guy

  4. #4
    Membre expert
    Avatar de Charly910
    Homme Profil pro
    Ingénieur TP
    Inscrit en
    Décembre 2006
    Messages
    2 344
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur TP
    Secteur : Bâtiment Travaux Publics

    Informations forums :
    Inscription : Décembre 2006
    Messages : 2 344
    Points : 3 122
    Points
    3 122
    Par défaut
    Bonjour,

    en W10, dans TaskMgr, il faut ajouter la colonne "Plateforme" pour afficher 32 ou 64 bits. Je l'ai fait et ton code fonctionne bien avec les programmes 32 bits et 64 bits.

    Il faudrait que quelqu'un teste en W7

    A+
    Charly

  5. #5
    Futur Membre du Club
    Profil pro
    Inscrit en
    Novembre 2002
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2002
    Messages : 12
    Points : 7
    Points
    7
    Par défaut
    Citation Envoyé par Charly910 Voir le message
    Bonjour,

    en W10, dans TaskMgr, il faut ajouter la colonne "Plateforme" pour afficher 32 ou 64 bits. Je l'ai fait et ton code fonctionne bien avec les programmes 32 bits et 64 bits.

    Il faudrait que quelqu'un teste en W7

    A+
    Charly
    Bonsoir,
    Encore une fois merci pour l'information.
    Ceci confirme probablement qu'il y a quelque chose à voir avec la version.
    Je viens de regarder les colonnes du "taskmgr" et pas de "plateforme", j'ai regardé les autres options rien de concret.
    J'ai aussi modifié les propriétés de l'exe pour qu'il s'exécute en mode compatible Win7 et cela ne change rien, je retrouve toujours "*32" dans le nom.
    J'ai aussi chercher une évolution de Thelp32 mais sans trouver grand chose.
    Merci et @+
    Guy.

  6. #6
    Rédacteur/Modérateur
    Avatar de Andnotor
    Inscrit en
    Septembre 2008
    Messages
    5 683
    Détails du profil
    Informations personnelles :
    Localisation : Autre

    Informations forums :
    Inscription : Septembre 2008
    Messages : 5 683
    Points : 13 092
    Points
    13 092
    Par défaut
    Si ce n'est qu'il pourrait être simplifié, rien de choquant dans ce code.
    Quant au gestionnaire de tâche de Win7, il ajoute *32 aux apps 32 bits mais ce n'est que de l'affichage, le nom du processus ne change pas.

    Après, tu dis que tu rentres K8602.exe mais l'exe s'appelle K8062e.exe

  7. #7
    Futur Membre du Club
    Profil pro
    Inscrit en
    Novembre 2002
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2002
    Messages : 12
    Points : 7
    Points
    7
    Par défaut
    Citation Envoyé par Andnotor Voir le message
    Si ce n'est qu'il pourrait être simplifié, rien de choquant dans ce code.
    Quant au gestionnaire de tâche de Win7, il ajoute *32 aux apps 32 bits mais ce n'est que de l'affichage, le nom du processus ne change pas.

    Après, tu dis que tu rentres K8602.exe mais l'exe s'appelle K8062e.exe
    Bonsoir,
    Merci pour cette remarque.
    C'est une faute de frappe, en fait je rentre bien K8602e.exe
    Effectivement le nom du processus est bien K8602e.exe.
    Guy

  8. #8
    Futur Membre du Club
    Profil pro
    Inscrit en
    Novembre 2002
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2002
    Messages : 12
    Points : 7
    Points
    7
    Par défaut
    Citation Envoyé par guy jeuniaux Voir le message
    Bonsoir,
    Merci pour cette remarque.
    C'est une faute de frappe, en fait je rentre bien K8602e.exe
    Effectivement le nom du processus est bien K8602e.exe.
    Guy
    Re bonsoir,
    En fait la remarque de "Andnotor" était plus que pertinente ...
    Je viens de remarquer que depuis le début je faisait une grooosse faute frappe :
    En effet je tapais K8602e.exe pour chercher un process qui s’appelle en réalité K8062e.exe !!!!!!
    C'est une erreur de ma part.
    Je suis désolé de vous avoir fait chercher un problème là où il n'y en avait pas.
    Il va falloir encore une fois que je change de lunettes.
    Encore merci pour votre aide et bonne soirée
    Guy

  9. #9
    Futur Membre du Club
    Profil pro
    Inscrit en
    Novembre 2002
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2002
    Messages : 12
    Points : 7
    Points
    7
    Par défaut
    Citation Envoyé par guy jeuniaux Voir le message
    Re bonsoir,
    En fait la remarque de "Andnotor" était plus que pertinente ...
    Je viens de remarquer que depuis le début je faisait une grooosse faute frappe :
    En effet je tapais K8602e.exe pour chercher un process qui s’appelle en réalité K8062e.exe !!!!!!
    C'est une erreur de ma part.
    Je suis désolé de vous avoir fait chercher un problème là où il n'y en avait pas.
    Il va falloir encore une fois que je change de lunettes.
    Encore merci pour votre aide et bonne soirée
    Guy
    Et en plus je l'avais écrit et tu l'avais remarqué !!!
    Décidément, j'ai tout faux
    Je vais aller me coucher
    Guy.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. programme en cours d'exécution introuvable
    Par bichette dans le forum Windows XP
    Réponses: 8
    Dernier message: 31/07/2006, 13h32
  2. Lister les programmes en cours d'execution
    Par jejerome dans le forum Shell et commandes GNU
    Réponses: 3
    Dernier message: 07/04/2006, 16h05
  3. [NetBeans] Arreter un programme en cours d'execution
    Par vallica dans le forum NetBeans
    Réponses: 3
    Dernier message: 08/12/2005, 12h24
  4. Ecraser un programme en cours d'execution
    Par Shiva dans le forum Langage
    Réponses: 12
    Dernier message: 05/10/2005, 18h03
  5. Réponses: 18
    Dernier message: 16/03/2005, 17h22

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo