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

Windows Discussion :

Lister les applications en cours


Sujet :

Windows

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    193
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 193
    Points : 65
    Points
    65
    Par défaut Lister les applications en cours
    Bonjour,
    je voudrais imitter le gestionnaire des tâches de windows, et créer un petit exécutable pour lister toutes les applications en cours.
    Par "applications", j'entends en faite toutes les fenêtres en cours. Ne pas confondre avec les processus. Pour résumer, mon programme correspondrait donc à l'onglet "applications" du gestionnaire des tâches, bien que je trouve personnellement que le nom ne correspond pas vraiment (ben oui les pages internet ou les images c'est pas des applications !).
    Voila, merci pour votre aide.

  2. #2
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 464
    Points : 542
    Points
    542
    Par défaut
    Une solution :

    - tu énumères les processus actifs du système
    - pour chaque processus tu enumères les threads
    - tu regardes si au moins un thread d'un processus est rattaché à une fenêtre "top-level"
    - si oui, c'est une "application" dans le sens où tu l'entends dans ta question

    Mais c'est pas vraiment un problème de C++ ...

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    193
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 193
    Points : 65
    Points
    65
    Par défaut
    Tu es sûr qu'il n'y a pas de meilleur solution ? Ca me parait un peu complexe pour quelque choses comme ca. Et es tu sûr que cette méthode est fiable ? Je voudrais juste, au final, obtenir les noms des fenêtres visibles dans la barre des tâches.
    Merci pour ton aide.

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 464
    Points : 542
    Points
    542
    Par défaut
    Citation Envoyé par The Lord of Nesquik
    Je voudrais juste, au final, obtenir les noms des fenêtres visibles dans la barre des tâches.
    Merci pour ton aide.
    Pour ça tu peux effectivement te limiter à énumérer les fenêtres "top-level" en cours avec EnumWindows().

    Mais je ne suis pas sûr que ce soit suffisant pour garantir qu'il n'y ait pas de redondances (cas de plusieurs fenêtres rattachées à la même application ?).

    De plus, tu n'obtiendras des infos que sur des fenêtres et pas sur les applications en tant que processus/threads (donc pas de possibilité de remplir une colonne "état" comme dans le gestionnaire des tâches de Windows par ex).

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    193
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 193
    Points : 65
    Points
    65
    Par défaut
    Ok merci.
    Citation Envoyé par rigobert
    - tu énumères les processus actifs du système
    - pour chaque processus tu enumères les threads
    - tu regardes si au moins un thread d'un processus est rattaché à une fenêtre "top-level"
    - si oui, c'est une "application" dans le sens où tu l'entends dans ta question
    Je sais lister les processus actifs, mais le reste, les threads et top-level, je sais pas du tout ! D'ailleur je sais à peine ce qu'est un thread. Tu n'aurais pas un lien, un p'tit tuto pour éclairer ma lanterne ?
    Merci !

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 464
    Points : 542
    Points
    542
    Par défaut
    Citation Envoyé par The Lord of Nesquik
    Je sais lister les processus actifs, mais le reste, les threads et top-level, je sais pas du tout ! D'ailleur je sais à peine ce qu'est un thread. Tu n'aurais pas un lien, un p'tit tuto pour éclairer ma lanterne ?
    Hmm... Un petit tuto ne serait effectivement pas inutile, c'est un sujet un peu délicat : entre autre, le propre des processus et des threads c'est d'apparaitre et de disparaitre (presque) sans cesse, donc les parcourir n'est pas forcément trivial.

    Tu peux peut-être commencer par voir ce que dit MSDN sur le sujet -> ici

    Sinon pour te donner une ligne directrice, si je devais faire ce que tu envisages, j'utiliserais CreateToolhelp32Snapshot() pour faire le tour des processus et des threads actifs, et je croiserais les résultats avec ce que renvoient EnumThreadWindows() et EnumWindows() pour au final ne garder que les processus pertinents.

    Voilà, si tu es perdu, n'hésite pas à reposter des questions précises.

Discussions similaires

  1. Réponses: 2
    Dernier message: 20/02/2009, 10h36
  2. Réduire les applications en cours
    Par HPulluard dans le forum Windows
    Réponses: 9
    Dernier message: 07/06/2008, 20h35
  3. Réponses: 9
    Dernier message: 31/01/2008, 15h03
  4. 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
  5. Lister les applications en cour...
    Par deetox dans le forum API, COM et SDKs
    Réponses: 4
    Dernier message: 13/10/2005, 19h50

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