With ActiveWindow
.Left
.Top
.Width
.Height
End With
@maximisées les windows sont sensées occuper tout le rcwork que je sache non ?@patricktoulon, là tu me parles de RECT des moniteurs (rcMonitor ou rcWork), toutes choses que ma ressource connait et utilise. Dans ce sujet, ce sont les Windows qui sont concernées.
@TooFatBoy, tes résultats sont tous les mêmes quant au WindowRECT, sauf la position et les coordonnées de la barre des tâches qui n'ont aucun sens. C'est un peu comme si aucune des API ne fonctionnait. Je ne sais pas ce qui se passe sur ta config.
Si ta Barre des Tâches est en "autohide" alors tout est normal, y compris la différence entre les 2 fonctions car je n'ai pas testé ce cas dans la fonction SHAppBarMessage. Je comprends mieux les résultats.Oui, mais seul le "Simple" donne le bon résultat.
Qu'entends-tu par demi et plein écran ?pourtant les résultats sont différents selon demi écran ou pleine écran.
Tu as tout compris : ma BdT est effectivement masquée automatiquement.Si ta Barre des Tâches est en "autohide" alors tout est normal
16 et 16Alors peux-tu STP exécuter le fichier joint pour afficher les marges DiffX et DiffY (peu importe la position de la TaskBar qui est en autohide).
Declare PtrSafe Function GetClientRect Lib "user32" (ByVal hwnd As LongPtr, lpRect As rect) As Long
Declare PtrSafe Function GetWindowRect Lib "user32" (ByVal hwnd As LongPtr, lpRect As rect) As Long
Private Type rect
left As Long
top As Long
right As Long
bottom As Long
End Type
Sub test()
Dim r1 As rect, r2 As rect, r3 As rect
GetWindowRect Application.hwnd, r1
GetClientRect Application.hwnd, r2
Debug.Print "GetWindowRect : " & r1.left & " | " & r1.top & " | " & r1.right & " | " & r1.bottom
Debug.Print "GetClientRect : " & r2.left & " | " & r2.top & " | " & r2.right & " | " & r2.bottom
DiffX = (r1.right - r1.left) - (r2.right - r2.left)
DiffY = (r1.bottom - r1.top) - (r2.bottom - r2.top)
With r3
.left = r1.left + Int(DiffX / 2)
.right = r1.right - Int(DiffX / 2) + DiffX Mod 2
.top = r1.top + Int(DiffY / 2) + DiffX Mod 2
.bottom = r1.bottom - Int(DiffY / 2) + DiffY Mod 2
End With
Debug.Print "rect final : " & r3.left & " | " & r3.top & " | " & r3.right & " | " & r3.bottom
End Sub
Y a vraiment pas de quoi, au contraireDésolé