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++

  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)?

  7. #7
    Expert confirm�

    Avatar de dragonjoker59
    Homme Profil pro
    Software Developer
    Inscrit en
    Juin 2005
    Messages
    2 033
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 43
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activit� : Software Developer
    Secteur : High Tech - �diteur de logiciels

    Informations forums :
    Inscription : Juin 2005
    Messages : 2 033
    Billets dans le blog
    12
    Par d�faut
    std::basic_string<TCHAR> prendra un TCHAR et aura les m�mes fonctions qu'un std::string (qui n'est qu'un typedef sur std::basic_string<char>)

    Citation Envoy� par leternel Voir le message
    std::string str = NomFenetre.toString(); (ou une variante, regarde la spec)?
    ne marchera pas car NomFenetre est un tableau de TCHAR...
    Si vous ne trouvez plus rien, cherchez autre chose...

    Vous trouverez ici des tutoriels OpenGL moderne.
    Mon moteur 3D: Castor 3D, presque utilisable (venez participer, il y a de la place)!
    Un projet qui ne sert � rien, mais qu'il est joli (des fois) : ProceduralGenerator (G�n�ration proc�durale d'images, et post-processing).

  8. #8
    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
    Escusez moi mais j'ai du mal,

    comme ceci :

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    qDebug() << std::basic_string(NomFenetre);

  9. #9
    Expert confirm�

    Avatar de dragonjoker59
    Homme Profil pro
    Software Developer
    Inscrit en
    Juin 2005
    Messages
    2 033
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 43
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activit� : Software Developer
    Secteur : High Tech - �diteur de logiciels

    Informations forums :
    Inscription : Juin 2005
    Messages : 2 033
    Billets dans le blog
    12
    Par d�faut
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    typedef std::basic_string<TCHAR> tstring;
    tstring strNomFenetre( NomFenetre );
    qDebug() << strNomFenetre;
    Pour la petite histoire, std::string n'accepte dans ton cas pas un TCHAR car tu compiles certainement en UNICODE. Si tu veux te passer de ce genre de probl�mes, tu peux compiler en MBCS (dans les propri�t�s de ton projet, onglet g�n�ral)
    Si vous ne trouvez plus rien, cherchez autre chose...

    Vous trouverez ici des tutoriels OpenGL moderne.
    Mon moteur 3D: Castor 3D, presque utilisable (venez participer, il y a de la place)!
    Un projet qui ne sert � rien, mais qu'il est joli (des fois) : ProceduralGenerator (G�n�ration proc�durale d'images, et post-processing).

  10. #10
    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
    Il m'est impossible d'afficher ceci dans un qDebug

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    main.cpp:46: erreur : no match for 'operator<<' in 'qDebug()() << strNomFenetre'

  11. #11
    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
    c'est parce qu'il n'y a pas de parenth�ses dans qDebug << str;

  12. #12
    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
    Il est d�sormais impossible d'afficher un tstring avec qDebug..

  13. #13
    Expert confirm�

    Avatar de dragonjoker59
    Homme Profil pro
    Software Developer
    Inscrit en
    Juin 2005
    Messages
    2 033
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 43
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activit� : Software Developer
    Secteur : High Tech - �diteur de logiciels

    Informations forums :
    Inscription : Juin 2005
    Messages : 2 033
    Billets dans le blog
    12
    Par d�faut
    Quelles sont les fonctions disponibles dans qDebug ?
    Si vous ne trouvez plus rien, cherchez autre chose...

    Vous trouverez ici des tutoriels OpenGL moderne.
    Mon moteur 3D: Castor 3D, presque utilisable (venez participer, il y a de la place)!
    Un projet qui ne sert � rien, mais qu'il est joli (des fois) : ProceduralGenerator (G�n�ration proc�durale d'images, et post-processing).

  14. #14
    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

  15. #15
    Expert confirm�

    Avatar de dragonjoker59
    Homme Profil pro
    Software Developer
    Inscrit en
    Juin 2005
    Messages
    2 033
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 43
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activit� : Software Developer
    Secteur : High Tech - �diteur de logiciels

    Informations forums :
    Inscription : Juin 2005
    Messages : 2 033
    Billets dans le blog
    12
    Par d�faut
    Pour r�pondre b�tement � ta question, je dirais que tu dois construire un objet QString � partir de ton NomFenetre pour le passer ensuite � qDebug.
    Maintenant je me pose la question de la validit� de ton code d'autant que comme dit phi1981, GetWindowText ne te permettra probablement pas de r�cup�rer le texte d'une fen�tre d'un autre application (cf. MSDN).
    Donc au final, que cherches-tu � faire ?
    Si vous ne trouvez plus rien, cherchez autre chose...

    Vous trouverez ici des tutoriels OpenGL moderne.
    Mon moteur 3D: Castor 3D, presque utilisable (venez participer, il y a de la place)!
    Un projet qui ne sert � rien, mais qu'il est joli (des fois) : ProceduralGenerator (G�n�ration proc�durale d'images, et post-processing).

  16. #16
    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
    Je peut seulement r�cup�rer le nom de l'application qui as le focus ? ou juste l'application ?

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