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 :

Comment savoir quelle application a le focus


Sujet :

Windows

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Août 2007
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 7
    Par défaut Comment savoir quelle application a le focus
    Salut

    Donc tout est dans le titre.
    Je recherche une fonction ou un moyen de savoir quelle prcessus a le focus de preference en api,en c ou c++ sa n'a pas d'importance et ca n'a pas besoin d'être portable.
    Je programme sous windows xp avec Code:Blocks.
    merci d'avance.
    Bonne journée.

  2. #2
    Membre émérite Avatar de stephl
    Profil pro
    Développeur informatique
    Inscrit en
    Février 2007
    Messages
    643
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Février 2007
    Messages : 643
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    GetFocus() ou GetForegroundWindow()
    me semble-t-il.

    EDIT: Plus précisément:
    Citation Envoyé par Win32 Developer's References
    The GetFocus function retrieves the handle of the window that has the keyboard focus, if the window is associated with the calling thread's message queue.

    HWND GetFocus(VOID)


    Parameters

    This function has no parameters.

    Return Values

    If the function succeeds, the return value is the handle of the window with the keyboard focus. If the calling thread's message queue does not have an associated window with the keyboard focus, the return value is NULL.

    Remarks

    Even if GetFocus returns NULL, another thread's queue may be associated with a window that has the keyboard focus.
    Use the GetForegroundWindow function to retrieve the handle to the window with which the user is currently working. You can associate your thread's message queue with the windows owned by another thread by using the AttachThreadInput function.

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Août 2007
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 7
    Par défaut recuperer le nom d'une application d'après son handle
    re

    C'est encore moi,je n'ai pas reussi a faire marcher GetFocus alors j'ai utilisé GetForegroundWindow().J'ai le handle mais je ne sais pas comment retrouver le nom de l'application associé à cet handle.
    (je suis un petit new en api)
    merci d'avance.

  4. #4
    Membre émérite Avatar de stephl
    Profil pro
    Développeur informatique
    Inscrit en
    Février 2007
    Messages
    643
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Février 2007
    Messages : 643
    Par défaut
    Il y a peut-être plus simple mais cela devrait fonctionner:
    1. GetForegroundWindow() pour obtenir le handle de fenêtre
    2. GetWindowThreadProcessId() pour obtenir l'id du process ayant créé cette fenêtre
    3. CreateToolhelp32Snapshot() pour obtenir un aperçu des process
    4. Process32First() et Process32Next() pour parcourir la liste des process jusqu'à obtenir celui ayant l'id recherché
    5. Le nom de l'EXE est dans le champ szExeFile de la structure PROCESSENTRY32

  5. #5
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Août 2007
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 7
    Par défaut
    merci pour ta reponce. c'est nikel c'est se que je cherchais.
    je vais essayer sa tout de suite et je tiens au courant.
    merci encore

  6. #6
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Août 2007
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 7
    Par défaut
    salut

    je galere,je ne sais plus comment faire
    j'ai reussi a récuperer le handle de la fenêtre grace a GetForegroundWindow()
    puis d'après le handle j'ai reussi a trouver un PID mais celui si n'est pas dans le gestionaire des tache donc je suppose que c'est le PID d'un thread ou un truc comme sa.(oublié pas je suis un petit nouveau en api)
    j'ai essayé d'utiliser Process32First() mais je dois m'être planter dans les arguments à envoyer car j'ai des warnings à la compilation.
    voici un bout de code "test" que j'ai fais:
    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
    #include <windows.h>
    #include <tlhelp32.h>
    #include <stdio.h>
    
    
    
    
    
    int main( )
    {
        HANDLE hProcessSnap;
        LPPROCESSENTRY32 lppe;
    
    
         
            HWND PID=GetForegroundWindow();
    
            HANDLE hSnapShot=CreateToolhelp32Snapshot( TH32CS_SNAPPROCESS, PID);//j'ai un warning au niveau du deuxieme argument
            BOOL WINAPI Process32First(
                hSnapshot,
                lppe//j'ai un autre warning ici 
            );
            printf("%s\n", lppe->szExeFile);
            system("pause");
    
    return 0;
    }
    merci encore pour votre aide mais la je suis sur le point d'abandonner cette idée
    help!!!!!!!!!!!!!!!
    a++

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

Discussions similaires

  1. Comment savoir quelle application utilise quel bloc d'instructions
    Par ramzioil dans le forum x86 32-bits / 64-bits
    Réponses: 10
    Dernier message: 20/04/2009, 15h16
  2. [Process] Comment savoir quelle application est ouverte ?
    Par samus535 dans le forum Framework .NET
    Réponses: 1
    Dernier message: 25/08/2006, 15h01
  3. DLL -> savoir quelle application ou form l'a appelée
    Par chtiot dans le forum API, COM et SDKs
    Réponses: 4
    Dernier message: 25/02/2006, 11h33
  4. Comment savoir quelle fenêtre possède le focus ?
    Par WebPac dans le forum API, COM et SDKs
    Réponses: 4
    Dernier message: 22/12/2005, 09h59
  5. Comment savoir quelle version d'MSXML IE utilise?
    Par trent94 dans le forum XML/XSL et SOAP
    Réponses: 2
    Dernier message: 17/07/2005, 18h38

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