Récupérer le handle d'une fenêtre précise

AMS010 Messages postés 14 Date d'inscription jeudi 28 février 2008 Statut Membre Dernière intervention 6 juillet 2008 - 4 juil. 2008 à 15:51
DavySA Messages postés 1 Date d'inscription jeudi 28 août 2008 Statut Membre Dernière intervention 2 septembre 2008 - 2 sept. 2008 à 11:20
Bonjour,
Je programme depuis quelques temps avec l'API windows, et j'ai commencé à lire le tutoriel de gRRrosminet sur le Contrôle du clavier et de la souris sous Windows; mais seul problème, je n'arrive pas à recupérer le handle du lecteur windows media.
Celà m'affiche 0x0...
Je me demande alors si le problème viens du class name, qui est incorrecte.
Je me demandais aussi comment connaitre le class name d'un fenetre.

Merci d'avance pour vos réponses.



Voilà le code:
#include <windows.h>
#include <stdio.h>
int main(int argc, char * argv[])
{

HWND hMediaplayer = FindWindow("Media Player 2",NULL);
printf("le handle de la fenêtre de media player 2 est : 0x%X",hMediaplayer);
return 0;
}

7 réponses

BastienL21 Messages postés 172 Date d'inscription dimanche 10 décembre 2000 Statut Membre Dernière intervention 12 février 2009 2
4 juil. 2008 à 18:48
Slt,
    Après avoir vérifié dans mes codes, il me semble que ce n'est pas :
HWND hMediaplayer = FindWindow("Media Player 2",NULL);
Mais :
HWND hMediaplayer = FindWindow("Media Player 2");
Après cette "inversion", si le nom de la fenêtre est bien ''Media Player 2'', tout devrait aller (J'ai aussi remarquer que quand il y des accents dans le titre, ca ne fonctionne pas.

Cordialement, B@stien.//@++
0
AMS010 Messages postés 14 Date d'inscription jeudi 28 février 2008 Statut Membre Dernière intervention 6 juillet 2008 1
4 juil. 2008 à 18:54
Non celà ne marche pas :(
J'aimerais aussi préciser que Maidia player 2, ce n'est pas le nom de la fenetre mais plutot son class name...

PS: je travaille avec code::blocks.
0
BastienL21 Messages postés 172 Date d'inscription dimanche 10 décembre 2000 Statut Membre Dernière intervention 12 février 2009 2
4 juil. 2008 à 19:00
Dans ce cas je ne vois pas...DSL...(ou peut-être, je ne sais pas, es-tu sûr que' %X' est une syntaxe correct? je ne sais pas, je n'avais jamais vu cette syntaxe...)

Cordialement, B@stien.//@++
0
AMS010 Messages postés 14 Date d'inscription jeudi 28 février 2008 Statut Membre Dernière intervention 6 juillet 2008 1
4 juil. 2008 à 19:06
Oui, la sysntaxe est juste puisque je me suis sérvi de celle-ci pour récupérer le handle de la fenêtre au premier plan avec le code suivant:
#include <windows.h>
#include <stdio.h>
int main(int argc, char * argv[])
{
HWND hFore = GetForegroundWindow();
printf("le handle de la fenêtre au premier plan est : 0x%X",hFore);
return 0;
}

En procedant par élémination, je parviens à la conclusion suivante:
Le problème viens sois de l'OS, de l'IDE,ou des parametre de la fonction...
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
SAKingdom Messages postés 3212 Date d'inscription lundi 7 novembre 2005 Statut Membre Dernière intervention 16 février 2009 15
4 juil. 2008 à 19:30
"If the function fails, the return value is NULL. To get extended error information, call GetLastError."

Si FindWindow retourne NULL, c'est qu'il n'a pas trouvé de fenêtre dont le nom de classe est "Media Player 2".

Un moyen de vérifier le nom de classe d'une fenêtre est d'utiliser GetClassName. Essais:

#include <windows.h>

#include <stdio.h>

int main(int argc, char * argv[])

{

     HWND hFore;

    char buf[300];

    Sleep(5000);

    hFore = GetForegroundWindow();

    GetClassName(hFore, buf, sizeof(buf));

     printf("%s\n", buf);

     return 0;

}

Ou quelque chose dans le genre. Je ne peux pas tester pour le moment.
Le Sleep, c'est pour te laisser le temps de mettre la fenêtre désirée en premier plan, car, je ne sais pas si en démarrant ton programme, GetForegroundWindow ne se trouvera pas à récupérer un HANDLE vers ton propre programme.

C++ (@++)
0
AMS010 Messages postés 14 Date d'inscription jeudi 28 février 2008 Statut Membre Dernière intervention 6 juillet 2008 1
5 juil. 2008 à 11:12
Merci,
Le problème est résolu...
0
DavySA Messages postés 1 Date d'inscription jeudi 28 août 2008 Statut Membre Dernière intervention 2 septembre 2008
2 sept. 2008 à 11:20
Bonjour,

Et c'était quoi la solution?
0
Rejoignez-nous