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

C++ Discussion :

GetWindowText [API Win32]


Sujet :

C++

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2012
    Messages
    37
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2012
    Messages : 37
    Par défaut GetWindowText [API Win32]
    Bonsoir,

    j'ai un soucis avec l'utilisation de GetWindowText avec l'api Win32, sa ne m'affiche pas le titre.

    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
            TCHAR NomProcess[1024];
            TCHAR NomFenetre[1024];
            DWORD lpdwProcessId;
            HANDLE PID;
     
            HWND Handle = GetForegroundWindow(); // on recupere le handle de la fenetre qui a le focus
     
            NomProcess[0]= '\n';//on met en premiere caractere un retour chariot pour qu'il y est bien retour a la ligne avaant d'ecrire la nouvelle ligne
            NomFenetre[0]= '\0';//pour s'assurer de ne pas ecrire autre chose..
     
            GetWindowThreadProcessId(Handle, &lpdwProcessId);//on recupere l'id du thread d'apres son handle
            PID = OpenProcess(PROCESS_ALL_ACCESS,false, lpdwProcessId);//on recupere le PID du processus auquel apartient le thread ci-dessus
     
            if(PID!=NULL)
            {
               GetModuleBaseName(PID, NULL, NomProcess, sizeof(NomProcess));//on recupere le nom du processus d'apres son PID
            }
     
            GetWindowText(Handle, NomFenetre, sizeof(NomFenetre));//ici on recupere le nom de la fenetre
            qDebug() << NomFenetre;

    Merci d'avance.

  2. #2
    Membre chevronné
    Inscrit en
    Décembre 2010
    Messages
    290
    Détails du profil
    Informations forums :
    Inscription : Décembre 2010
    Messages : 290
    Par défaut
    Salut,

    as tu testé la valeur de retour de GetWindowText() ?? et si elle te répond 0, as tu appelé GetLastError() ?
    Notamment, GetWindowText() ne permet pas de récupérer le texte d'un contrôle d'une autre application.

  3. #3
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2012
    Messages
    37
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2012
    Messages : 37
    Par défaut
    GetWindowText me renvoi parfaitement la taille du titre pour chaque fenêtre, mais quand j'affiche NomFenetre j'obtiens par exemple 0X28ccf6

  4. #4
    Membre chevronné
    Inscrit en
    Décembre 2010
    Messages
    290
    Détails du profil
    Informations forums :
    Inscription : Décembre 2010
    Messages : 290
    Par défaut
    Ah d'accord. Je ne connais pas qDebug, mais visiblement ça affiche l'adresse de ton tableau plutôt que son contenu.
    Donc, si tu faisais plutôt un :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    std::string str(NomFenetre);
    qDebug << str;
    à mon avis ça marcherait mieux, en espérant que qDebug supporte une chaine de caractères standard.

  5. #5
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2012
    Messages
    37
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2012
    Messages : 37
    Par défaut
    string ne prend pas en paramétre de TCHAR

  6. #6
    Expert éminent

    Femme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2007
    Messages
    5 202
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Juin 2007
    Messages : 5 202
    Par défaut
    et avec un std::string str = NomFenetre; ou encore std::string str = NomFenetre.toString(); (ou une variante, regarde la spec)?

Discussions similaires

  1. [Débutant]Quelques questions de principe sur l'API win32
    Par silver_dragoon dans le forum Windows
    Réponses: 4
    Dernier message: 19/03/2004, 18h38
  2. [API WIN32] Pb avec SHGetSpecialFolderLocation
    Par Invité dans le forum MFC
    Réponses: 3
    Dernier message: 27/01/2004, 21h19
  3. [API Win32] WriteFile()
    Par tut dans le forum MFC
    Réponses: 2
    Dernier message: 27/01/2004, 16h13
  4. API Win32
    Par benoit70 dans le forum MFC
    Réponses: 8
    Dernier message: 26/01/2004, 19h11
  5. [API win32] Récupérer le répertoire d'un profile
    Par sbeu dans le forum API, COM et SDKs
    Réponses: 3
    Dernier message: 27/09/2002, 12h38

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