Savoir si une fenetre est au premier plan permanent

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

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.