[DllImport("user32.dll")]
[return: MarshalAs(UnmanagedType.Bool)]
static extern bool GetWindowPlacement(IntPtr hWnd, ref WINDOWPLACEMENT lpwndpl);
<DllImport("user32.dll")> _
Public Shared Function GetWindowPlacement( _
ByVal hWnd As IntPtr, _
ByRef lpwndpl As WINDOWPLACEMENT) As Boolean
End Function
POINTAPI, RECT and WINDOWPLACEMENT
None.
Please add some!
public class Sample
{
[DllImport("user32.dll")]
[return: MarshalAs(UnmanagedType.Bool)]
static extern bool GetWindowPlacement(IntPtr hWnd, ref WINDOWPLACEMENT lpwndpl);
private struct POINTAPI
{
public int x;
public int y;
}
private struct RECT
{
public int left;
public int top;
public int right;
public int bottom;
}
private struct WINDOWPLACEMENT
{
public int length;
public int flags;
public int showCmd;
public POINTAPI ptMinPosition;
public POINTAPI ptMaxPosition;
public RECT rcNormalPosition;
}
...
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.