Savoir si une fenetre est au premier plan permanent

Soyez le premier à donner votre avis sur cette source.

Snippet vu 8 431 fois - Téléchargée 30 fois

Contenu du snippet

Salut la compagnie

J'ai fait cette routine pour savoir si une fenetre est au premier plan permanent car aucune API à ce que je sais ne peux le dire directement.

Le principe : si une fenetre à tester se laisse recouvrir par une autre fenetre qui est elle standard, alors la fenetre à tester n'est pas au premier plan permanent

Il vous faut une form, contenant le code ci dessous, un bouton et un textbox dans la meme form, et une form supplémentaire (form2) contenant aucun code

Source / Exemple :


Private Type RECT
    Left As Long
    Top As Long
    Right As Long
    Bottom As Long
End Type

Private Type POINTAPI
    X As Long
    Y As Long
End Type

Private Declare Function GetWindowRect Lib "user32" (ByVal hwnd As Long, lpRect As RECT) As Long
Private Declare Function WindowFromPoint Lib "user32" (ByVal xPoint As Long, ByVal yPoint As Long) As Long

Private Function TopAsk(hwnd As Long) As Boolean
Dim Rec As RECT 'declaration de la variable accueuillant les infos de la position de la fenetre désirée
GetWindowRect hwnd, Rec 'enregistrement des infos
Form2.Show 'affichage de form2
Form2.Left = Rec.Left * Screen.TwipsPerPixelX 'à la meme X que la fenetre a tester (les donnée en VB étant par defaut en twips, on multiplie pour avoir les mesures en pixels pour l'écran
Form2.Top = Rec.Top * Screen.TwipsPerPixelY 'à la meme Y que la fenetre à tester (les donnée en VB étant par defaut en twips, on multiplie pour avoir les mesures en pixels pour l'écran
If WindowFromPoint(Rec.Left, Rec.Top) = Form2.hwnd Then 'si la fenetre au premier plan et au points X et Y  de la fenetre a tester est la meme que celle que l'on a affiché, alors la fenetre a tester n'est pas en premier plan permanent car elle s'est laissée recouvrir
TopAsk = False
Else: TopAsk = True
End If
Unload Form2
End Function

Private Sub Command1_Click()
MsgBox TopAsk(Text1.Text)
End Sub

Conclusion :


N"hésitez pas pour les commentaires et Joyeuses Paques ;)

A voir également

Ajouter un commentaire Commentaires
Messages postés
3
Date d'inscription
mardi 24 mai 2005
Statut
Membre
Dernière intervention
19 mai 2006

sa fonctionne a merveille merci bonhomme ;)
Messages postés
53
Date d'inscription
lundi 17 décembre 2001
Statut
Membre
Dernière intervention
13 octobre 2006

Cette méthode ne fonctionne pas :-(
Même si la fenêtre est au premier plan, j'ai un retour à True.
Messages postés
1115
Date d'inscription
jeudi 19 décembre 2002
Statut
Membre
Dernière intervention
6 mai 2007

Ok, alors je ferai ça pour toi (ou vous à propos de la communauté ? :-o hihihi) demain si j'ai le temps, un zoli pti résumé de toutes les méthodes que je connai
Messages postés
29
Date d'inscription
jeudi 10 avril 2003
Statut
Membre
Dernière intervention
19 avril 2005

toutes les méthodes de récupérations du handle serait bien car c'est une question qui revient souvent

(MERCI)
Messages postés
1115
Date d'inscription
jeudi 19 décembre 2002
Statut
Membre
Dernière intervention
6 mai 2007

Sa dépend, il y a plusieurs méthodes, avoir le handle par son titre de fenetre, par listage de toutes les fenetres ouvertes et sélection apres, ou encore le handle de celle qui est au premier plan, ou encore celle qui se trouve sous le curseur, et j'en oublie surement, Tu préfere laquelle ? ;)
Afficher les 7 commentaires

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.