Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1475 connectés 

  FORUM HardWare.fr
  Programmation
  C++

  Récupérer le titre d'une fenêtre

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Récupérer le titre d'une fenêtre

n°1116084
Ajakaty
Posté le 10-06-2005 à 17:42:07  profilanswer
 

Bonjour!!
 
Je vous écris car je me trouve devant un problème que je n'arrive pas à résoudre...
 
En fait je veux récupérer le titre d'une fenêtre quand je passe ma souris dessus.
Il y a la méthode qui consiste à faire :
    HWND hwnd = GetForegroundWindow();
    char * caption = new char[255];
     int length = GetWindowText(hwnd,caption,254);
et qui marche très bien.
Seulement, avec mon programme je ne veux pas récupérer le titre de la fenêtre au premier plan mais n'importe quelle fenêtre sur laquelle je me trouve avec ma souris!
Alors je fais :
    GetCursorPos(&pos);
    HWND hWndUnder = WindowFromPoint(pos);
    LPTSTR p = sText.GetBuffer(MAX_PATH);
    GetWindowText(hWndUnder, p, MAX_PATH);
seulement voilà, ça ne retourne pas toujours le titre!!! Confused Ca donne le titre si je passe sur la barre bleue suppérieure mais si par exemple on passe sur une fenêtre avec une barre d'outils, ça donne le nom de la barre d'outil...
Et moi je veux récupérer le titre quelque soit l'endroit où je me trouve sur la fenêtre!
Je pense que WindowFromPoint ne me renvoie pas le bon handle mais j'arrive pas à m'en sortir....
Est-ce que quelqu'un a une idée???
 
Merci d'avance!!! Very Happy

mood
Publicité
Posté le 10-06-2005 à 17:42:07  profilanswer
 

n°1116980
CosmoSys
Posté le 12-06-2005 à 01:44:42  profilanswer
 

Bonjour,
Il faudrait que tu récupères le nom de la fenetre principale de ton application => GetParent(hWndUnder) = 0
Il te faut donc faire une petite boucle pour vérifier que ce n'est pas un handle de fenêtre fille.

n°1117013
Ajakaty
Posté le 12-06-2005 à 09:47:11  profilanswer
 

La fenêtre principale a hwnd = 0???
Je suis désolé mais je viens à peine il y a quelque jours de commencer à programmer avec cette api et je pense pas avoir bien saisi la "philosophie" de cette api... Parent, enfant, je ne sais pas trop la différence... :S
Je dois faire une boucle pour vérifier que ce n'est pas un handle de fenêtre fille? La boucle doit se faire sur quoi? Désolé mais je suis un peu perdu...

n°1117018
jan0
Posté le 12-06-2005 à 10:22:33  profilanswer
 

ce qu'il veut dire (enfin je crois) c'est de faire une boucle avec GetParent jusqu'a ce qu'elle retourne 0
Ainsi le dernier handle retourné sera celui de la fenêtre "globale".
Meme si c'est pas sur que ca marche car la fenetre principale peut avoir un parent.
Essayes de faire une boucle qui compare le resultat de GetParent à 0 et au handle retourné par GetDesktopWindow


Message édité par jan0 le 12-06-2005 à 10:22:57
n°1117025
Ajakaty
Posté le 12-06-2005 à 10:27:58  profilanswer
 

Ah mais moi je ne veux pas récupérer le handle de DesktopWindow mais le même que GetForegroundWindow... Et lui ce n'est pas 0 d'après ce que j'ai vu!

n°1117033
jan0
Posté le 12-06-2005 à 10:51:55  profilanswer
 

oui mais non
ce qu'on te dis c'est que si ta souris est sur une fenetre fille genre un controle de la fenetre et bien il tester si elle a un parent et ainsi de suite

Code :
  1. hWndUnder = WindowFromPoint(pos);
  2. HWND temp;
  3. HWND desktop=GetDesktopWindow();
  4. while(1)
  5. {
  6. temp = GetParent(hWndUnder)
  7. if(temp!= 0 && temp!=desktop) hWndUnder = temp;
  8. else break;
  9. }


Message édité par jan0 le 12-06-2005 à 10:54:00
n°1117036
Ajakaty
Posté le 12-06-2005 à 11:00:09  profilanswer
 

OK!
Donc avec ce code je vais de parent en parent jusqu'à ce que je tombe sur soit DesktopWindow soit jusqu'à 0. Et après, à partir de ça, je peux récupérer le handle qui m'intéresse?

n°1117037
Ajakaty
Posté le 12-06-2005 à 11:00:39  profilanswer
 

Désolé je dois vraiment vous paraître être un boulet.... :S

n°1117214
jan0
Posté le 12-06-2005 à 15:04:59  profilanswer
 

oui normalement le dernier handle doit être le bon mais on sait jamais

n°1117234
Ajakaty
Posté le 12-06-2005 à 15:12:22  profilanswer
 

MERCI!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
CA MARCHE!!!!!!!!!!!!!!!!!!
Je vous dois une fière chandelle!!!!!!!!!!
 
Au fait j'ai un autre problème, peut être pourrez-vous encore m'aider? :-)
En utilisant toujours mon WindowFromPoint, je voudrais savoir cette fois si je me trouve sur une icône du bureau. Vous savez si c'est possible?
Encore Merci!


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C++

  Récupérer le titre d'une fenêtre

 

Sujets relatifs
[batch] Interdire la fermeture d'une fenetreOuvrir fenetre à droite de l'écran
récupérer chaine dans fichier txtrecuperer le contenu d'un mail
Pb Double Fenetre en JavaArreter le processus de fermeture d'une fenêtre.
[Jsp/Java] Récupérer les propriétés d’une imageRécupérer l'heure du système avec un std::vector<int>
Récupérer le contenu de répertoiresRécupérer l'index d'un item d'un array constant
Plus de sujets relatifs à : Récupérer le titre d'une fenêtre


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR