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!!!
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....
Je viens de tester ton truc, ça ne marche pas... :'(
En fait, j'ai remarqué que la méthode GetForegroundWindow retournait un
hwnd correspondant directement à celui de la barre bleue supérieure. Il
faudrait que j'arrive au même résultat... J'ai essayé avec un GetAncestor mais ça ne marche pas....
exact, j'y ai repensé trop tard après avoir posté...
Faudrait tester si ton handle correspond à une barre d'outils ou un menu (GetClassName par exemple) et en ce cas faire:
hWndUnder = GetParent(hWndUnder);
A explorer