[DllImport("user32.dll", SetLastError = true)]
[return: MarshalAs(UnmanagedType.Bool)]
public static extern bool GetWindowPlacement(IntPtr hWnd, ref WINDOWPLACEMENT lpwndpl);
<DllImport("user32.dll")> _
Private Shared Function GetWindowPlacement(ByVal hWnd As IntPtr, ByRef lpwndpl As WINDOWPLACEMENT) As Boolean
End Function
Public Declare Function GetWindowPlacement Lib "user32" _
(ByVal hWnd As Long, _
ByRef lpwndpl As WINDOWPLACEMENT) As Long
The Win32 RECT structure is not compatible with the .NET System.Drawing.Rectangle structure.
The RECT structure has left, top, right, and bottom members but System.Drawing.Rectangle uses left, top, width, and height.
See WINDOWPLACEMENT for more info. Also read the MSDN documentation carefully.
private void GetPlacement()
{
WINDOWPLACEMENT placement = new WINDOWPLACEMENT();
placement.length = Marshal.SizeOf(placement);
GetWindowPlacement(this.Handle, ref placement);
}
Public Class Form1
Private Declare Function GetWindowPlacement Lib "user32" (ByVal hwnd As IntPtr, ByRef lpwndpl As WINDOWPLACEMENT) As Integer
Private Structure POINTAPI
Public x As Integer
Public y As Integer
End Structure
Private Structure RECT
Public Left As Integer
Public Top As Integer
Public Right As Integer
Public Bottom As Integer
End Structure
Private Structure WINDOWPLACEMENT
Public Length As Integer
Public flags As Integer
Public showCmd As Integer
Public ptMinPosition As POINTAPI
Public ptMaxPosition As POINTAPI
Public rcNormalPosition As RECT
End Structure
Private Sub Form1_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Click
Dim intRet As Integer
Dim wpTemp As WINDOWPLACEMENT
wpTemp.Length = System.Runtime.InteropServices.Marshal.SizeOf(wpTemp)
intRet = GetWindowPlacement(Me.Handle.ToInt32, wpTemp)
If wpTemp.showCmd = 1 Then
'normal
ElseIf wpTemp.showCmd = 2 Then
'minimized
ElseIf wpTemp.showCmd = 3 Then
'maximized
End If
'Stop
End Sub
End Class
The ManagedWindowsApi project (http://mwinapi.sourceforge.net) provides a
class ManagedWinapi.SystemWindow that has a Position property.