Récupérer le handle d'une fenêtre par survol

Résolu
sunvi
Messages postés
34
Date d'inscription
jeudi 16 juillet 2009
Statut
Membre
Dernière intervention
25 août 2009
- 5 août 2009 à 14:25
cs_juju12
Messages postés
966
Date d'inscription
samedi 3 avril 2004
Statut
Membre
Dernière intervention
4 mars 2010
- 6 août 2009 à 13:35
Bonjour,
je veux récupérer le handle d'un fenêtre par survol,
voilà le code que j'ai écrit,enfin, j'ai modifié un code de quelqu'un d'autre pour que ça réponde à mes besoins.
ça compile mais ça affiche n'importe quoi, quelqu'un voit où est l'erreur?
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include
 
HWND RecupHandle(void){
HWND hWindow=0;
const int MASK=32768;
POINT pCursor;
pCursor.x=0;
pCursor.y=0;
int iResult=1;
fflush(stdin);
printf("\nCliquez sur la fenêtre pour obtenir son handle\nPressez la touche 'Entree'\n");
getc(stdin);
while(iResult){
if(GetKeyState(VK_LBUTTON)&MASK){
GetCursorPos((LPPOINT)&pCursor);
iResult=0;
}
hWindow=WindowFromPoint(pCursor);
}
return(hWindow);
}
 
int main(void){
HWND handle;
handle = RecupHandle();
printf("%d\n", (int)&handle);
return 0;
}
 

4 réponses

cs_juju12
Messages postés
966
Date d'inscription
samedi 3 avril 2004
Statut
Membre
Dernière intervention
4 mars 2010
4
5 août 2009 à 18:06
C'est pas le code de récup le problèm, c'est printf...

printf("%d\n",(long)hWnd);
et non
printf("%d\n",&hWnd);

le cast n'est peut-être pas nécessaire, mais en tout cas toi tu affichais l'adresse de hWnd et non pas sa valeur (confusion avec scanf)...
3
sunvi
Messages postés
34
Date d'inscription
jeudi 16 juillet 2009
Statut
Membre
Dernière intervention
25 août 2009

5 août 2009 à 15:15
j'ai aussi éssayer le code suivant:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include

HWND RecupHandle(void){
HWND hWindow=0;
fflush(stdin);
printf("\nPlacez la fenetre au premier plan (pressez la touche 'Entree' et un compte à rebours de 5 secondes commencera...)");
getc(stdin);
Sleep(5000);
hWindow = GetForegroundWindow();
return(hWindow);
}

int main(void){
HWND handle;
handle = RecupHandle();
printf("%d\n",&handle);
return 0;
}


mais quoi que ce soit la fenêtre que je mets au premier plan, il m'affiche toujours 1245024, ce qui ne correspond au handle d'aucune fenêtre avec spy++...
help!
0
sunvi
Messages postés
34
Date d'inscription
jeudi 16 juillet 2009
Statut
Membre
Dernière intervention
25 août 2009

6 août 2009 à 09:45
qu'est ce que je peux être nulle
c'est bien ça
seulement j'ai remarqué que le handle que j'affiche est un "entier", qui correspond à ce que j'obtiens avec spy++ en hexa...
il faut manipuler l'entier ou l'hexa??!
0
cs_juju12
Messages postés
966
Date d'inscription
samedi 3 avril 2004
Statut
Membre
Dernière intervention
4 mars 2010
4
6 août 2009 à 13:35
Un handle c'est un nombre, peu importe qu'il soit affiché en base 10, 16 ou autre...
Si tu veux l'afficher en hexa avec printf :
printf("%X\n",hWnd);


(si c'était ça ta question?!)
0