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

Signaler
Messages postés
34
Date d'inscription
jeudi 16 juillet 2009
Statut
Membre
Dernière intervention
25 août 2009
-
Messages postés
966
Date d'inscription
samedi 3 avril 2004
Statut
Membre
Dernière intervention
4 mars 2010
-
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

Messages postés
966
Date d'inscription
samedi 3 avril 2004
Statut
Membre
Dernière intervention
4 mars 2010
4
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)...
Messages postés
34
Date d'inscription
jeudi 16 juillet 2009
Statut
Membre
Dernière intervention
25 août 2009

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!
Messages postés
34
Date d'inscription
jeudi 16 juillet 2009
Statut
Membre
Dernière intervention
25 août 2009

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??!
Messages postés
966
Date d'inscription
samedi 3 avril 2004
Statut
Membre
Dernière intervention
4 mars 2010
4
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?!)