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

Langage Delphi Discussion :

[Delphi] - Aide processus


Sujet :

Langage Delphi

  1. #1
    Nouveau Candidat au Club
    Inscrit en
    Janvier 2012
    Messages
    9
    Détails du profil
    Informations forums :
    Inscription : Janvier 2012
    Messages : 9
    Points : 0
    Points
    0
    Par défaut [Delphi] - Aide processus
    Bonjour, je travaille sur un projet en delphi et je voudrais récupérer le nom de la fenêtre active et le nom du processus de la fenêtre active, de sorte a récupérer le titre et le nom de processus utiliser dans une session d'utilisateur, j'ai deja la fonction qui me sert a récupérer le titre de la fenêtre active:

    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
     
    function AvtiveWindow() : string;
    var
      Handle: THandle;
      Len: LongInt;
      Title: string;
    begin
      Result := '';
      Handle := GetForegroundWindow;
      if Handle <> 0 then
      begin
        Len := GetWindowTextLength(Handle) + 1;
        SetLength(Title, Len);
        GetWindowText(Handle, PChar(Title), Len);
        Result := TrimRight(Title);
      end;
    end;
    Mais je ne sais pas comment récupérer le nom du processus qui a le focus

    Merci de l'aide que vous pourrez m'apporter

  2. #2
    Expert confirmé
    Avatar de Ph. B.
    Homme Profil pro
    Freelance
    Inscrit en
    Avril 2002
    Messages
    1 784
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Freelance
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2002
    Messages : 1 784
    Points : 5 915
    Points
    5 915
    Par défaut
    Bonjour,
    Citation Envoyé par overlock86 Voir le message
    Mais je ne sais pas comment récupérer le nom du processus qui a le focus
    Une fois obtenu le handle de la fenêtre, il faut récupérer par le ProcessId via GetWindowThreadProcessId puis le handle du processus via OpenProcess et enfin le nom du processus via GetModuleFileNameEx.
    Le tout se trouve dans l'unité Windows de Delphi sauf la dernière fonction qui est dans l'unité PsApi.

  3. #3
    Nouveau Candidat au Club
    Inscrit en
    Janvier 2012
    Messages
    9
    Détails du profil
    Informations forums :
    Inscription : Janvier 2012
    Messages : 9
    Points : 0
    Points
    0
    Par défaut
    Merci de ta réponse mais je débute un peut et comme je n'ai jamais manipuler les processus en delphi j'aurais aimé avoir un petit exemple si possible
    Merci !!

  4. #4
    Expert confirmé
    Avatar de Ph. B.
    Homme Profil pro
    Freelance
    Inscrit en
    Avril 2002
    Messages
    1 784
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Freelance
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2002
    Messages : 1 784
    Points : 5 915
    Points
    5 915
    Par défaut
    Citation Envoyé par overlock86 Voir le message
    Merci de ta réponse mais je débute un peut et comme je n'ai jamais manipuler les processus en delphi j'aurais aimé avoir un petit exemple si possible
    Merci !!
    Voici un bout de code minimal qui devrait fonctionner :
    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
    function GetExeName: String;
    var
      WinHdl, PrcHdl: THandle;
      Id: DWORD;
      ExeName: PChar;
    begin
      // Handle de la fenêtre
      WinHdl := GetForegroundWindow;
      // Id du processus
      GetWindowThreadProcessId(WinHdl, Id);
      // Handle du processus
      PrcHdl := OpenProcess(PROCESS_QUERY_INFORMATION + PROCESS_VM_READ, False, Id);
      ExeName := StrAlloc(256);
      GetModuleFileNameEx(PrcHdl, 0, ExeName, 255);
      // Libérer impérativement ce Handle !
      CloseHandle(PrcHdl);
      Result := String(ExeName);
    end;
    A améliorer ! Aucune vérification n'est faite sur la validité des handles obtenus ou de la chaîne de caractères...

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

Discussions similaires

  1. Réponses: 0
    Dernier message: 02/04/2012, 12h08
  2. besoin d'aide:processus de modélisation
    Par ramzi_iag dans le forum Modélisation
    Réponses: 1
    Dernier message: 09/04/2011, 15h07
  3. [PRO Delphi] Aide pour l'utilisation du logiciel
    Par mick605 dans le forum Outils
    Réponses: 1
    Dernier message: 13/08/2009, 01h14
  4. [BDS2006][delphi]aide relative à BlockRead
    Par paulfr dans le forum Langage
    Réponses: 2
    Dernier message: 28/12/2008, 23h04
  5. Demande d'aide processus
    Par ambition dans le forum C
    Réponses: 8
    Dernier message: 13/04/2008, 11h44

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