IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Windows Discussion :

[API] recupérer le handle de la fenêtre au premier plan


Sujet :

Windows

  1. #1
    Rédacteur
    Avatar de Halleck
    Homme Profil pro
    Consultant PHP
    Inscrit en
    Mars 2003
    Messages
    597
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Consultant PHP

    Informations forums :
    Inscription : Mars 2003
    Messages : 597
    Points : 878
    Points
    878
    Par défaut [API] recupérer le handle de la fenêtre au premier plan
    Bonjour à tous,

    Le titre indique tout. Je programme en Windev 7, et pour l'instant j'ai fait un timer qui récupère le handle de tous les objets survolés. Mon objectif est de manipuler la dernière fenêtre active. Ma fenêtre ne prend que le haut de l'écran et est en TopMost. Donc la fenêtre que je souhaite manipuler et la mienne sont côte à côte. J'utilise l'API GetParent pour trouver le handle de la fenêtre à laquelle cet objet appartient (sachant que je ne sais pas pourquoi, sous Windev l'API GetAncestor ne fonctionne pas), mais je ne trouve pas le bon Handle. Voici le code de mon Timer;
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    //declarations
    //------------
    POINT est une structure 
    	x est un entier long
    	y est un entier long
    FIN
    Pt est un POINT
    hWnd est un entier long //HANDLE
    hDC est un entier long
    nCount est un entier
    lpString est une chaîne ASCIIZ sur 255 //handle de l'objet
    
    //trouver le handle de l'objet survolé par la souris
    //--------------------------------------------------
    AppelDLL32("user32", "GetCursorPos", &Pt)
    hWnd = AppelDLL32("user32", "WindowFromPoint", Pt:x, Pt:y)
    hDC = AppelDLL32("user32", "GetDC", hWnd)
    lpString = NumériqueVersChaine( hWnd )
    nCount = Taille(lpString)
    
    //enregistrer le handle de la fenêtre à laquelle appartient l'objet trouvé
    //------------------------------------------------------------------------
    hWnd = lpString
    hWnd  =AppelDLL32("user32","GetParent",hWnd)
    //si c'est une fenêtre externe au programme et le handle est non nul
    SI hWnd <> Handle&#40;&#41;  OU hWnd <> "" OU hWnd <> 0 ALORS  //handle&#40;&#41; => handle de ma fenêtre 
    	SI SysFenTitre&#40;hWnd&#41; <> "" ALORS //une autre vérification en plus pour vérifie que le handle trouvé correspond bien à une fenêtre ouverte &#40;inutile&#41;
    		HwndFen = hWnd // hWndFen est une constante
    		Et_temp = hWnd // ajouter le handle à une étiquette de mon programme
    	FIN
    FIN
    Le problème c'est que le handle qui est censé être celui de la fenêtre parente de l'objet est différent en fonction des objets survolés de la même fenêtre (ouh! est-ce que je suis clair là? ). Je ne devrais donc pas utiliser GetParent. Mais qu'utiliser à la place?

    J'ai essayé d'utiliser l'API GetActiveWindow pour récupérer le handle de la fenêtre active si ce n'est pas celui de mon prog, mais je n'y arrive pas non plus.

    Pouvez-vous m'indiquer mes fautes, comment les réparer ou comment faire si j'ai tout faux?
    Zend PHP Certified Engineer, Certifié Symfony2
    blog : blog.lepine.pro
    Secrétaire de l'AFUP (Association des Utilisateurs de PHP)

  2. #2
    Candidat au Club
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    1
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2003
    Messages : 1
    Points : 4
    Points
    4
    Par défaut
    La fenetre active (celle qui a le FOCUS) s'obtient par GetForegroundWindow(), aucun param.
    ciao...
    BruNews, MVP Visual C++

  3. #3
    Rédacteur
    Avatar de Halleck
    Homme Profil pro
    Consultant PHP
    Inscrit en
    Mars 2003
    Messages
    597
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Consultant PHP

    Informations forums :
    Inscription : Mars 2003
    Messages : 597
    Points : 878
    Points
    878
    Par défaut
    C'est vraiment pas mal! Ca m'évite un programme lourd et 50 lignes de code qui ne marche pas . Merci, c'est la solution que je cherchais.

    Encore merci. Je clos le sujet...
    Zend PHP Certified Engineer, Certifié Symfony2
    blog : blog.lepine.pro
    Secrétaire de l'AFUP (Association des Utilisateurs de PHP)

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Comment mettre une fenêtre au premier plan?
    Par damien99 dans le forum MFC
    Réponses: 11
    Dernier message: 30/08/2006, 11h37
  2. Mettre des fenêtres en premier plan
    Par eliek_9 dans le forum VB 6 et antérieur
    Réponses: 16
    Dernier message: 02/08/2006, 06h08
  3. Mettre une fenêtre au premier plan
    Par Riko dans le forum Delphi
    Réponses: 4
    Dernier message: 20/06/2006, 19h30
  4. Script VBS - Focus garder la fenêtre en premier plan
    Par Furius dans le forum VBScript
    Réponses: 4
    Dernier message: 12/12/2005, 23h27
  5. Fenêtre au premier plan
    Par MeDioN dans le forum Agents de placement/Fenêtres
    Réponses: 4
    Dernier message: 09/10/2005, 14h02

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo