@msdn=http://search.microsoft.com/search/results.aspx?qu=$$$ @pinvoke=http://pinvoke.net/$$$.htm Summary: The GetWindowPlacement API !!!!C# Signature: /// <summary> /// Retrieves the show state and the restored, minimized, and maximized positions of the specified window. /// </summary> /// <param name="hWnd"> /// A handle to the window. /// </param> /// <param name="lpwndpl"> /// A pointer to the WINDOWPLACEMENT structure that receives the show state and position information. /// <para> /// Before calling GetWindowPlacement, set the length member to sizeof(WINDOWPLACEMENT). GetWindowPlacement fails if lpwndpl-> length is not set correctly. /// </para> /// </param> /// <returns> /// If the function succeeds, the return value is nonzero. /// <para> /// If the function fails, the return value is zero. To get extended error information, call GetLastError. /// </para> /// </returns> [DllImport("user32.dll", SetLastError = true)] [return: MarshalAs(UnmanagedType.Bool)] internal static extern bool GetWindowPlacement(IntPtr hWnd, ref WINDOWPLACEMENT lpwndpl); !!!!VB.NET Signature: <DllImport("user32.dll")> _ Private Shared Function GetWindowPlacement(ByVal hWnd As IntPtr, ByRef lpwndpl As WINDOWPLACEMENT) As Boolean End Function !!!!VB Signature: Public Declare Function GetWindowPlacement Lib "user32" _ (ByVal hWnd As Long, _ ByRef lpwndpl As WINDOWPLACEMENT) As Long !!!!User-Defined Types: [WINDOWPLACEMENT] !!!!Notes: None. !!!!Tips & Tricks: For C# only: It seems you have to do rcNormalPosition.Width - rcNormalPosition.X to get the actual width because "Width" is actually a "Right", same goes for height. !!!!C# Sample Code: public class Sample { [DllImport("user32.dll")] [return: MarshalAs(UnmanagedType.Bool)] static extern bool GetWindowPlacement(IntPtr hWnd, ref WINDOWPLACEMENT lpwndpl); private struct WINDOWPLACEMENT { public int length; public int flags; public int showCmd; public System.Drawing.Point ptMinPosition; public System.Drawing.Point ptMaxPosition; public System.Drawing.Rectangle rcNormalPosition; } const UInt32 SW_HIDE = 0; const UInt32 SW_SHOWNORMAL = 1; const UInt32 SW_NORMAL = 1; const UInt32 SW_SHOWMINIMIZED = 2; const UInt32 SW_SHOWMAXIMIZED = 3; const UInt32 SW_MAXIMIZE = 3; const UInt32 SW_SHOWNOACTIVATE = 4; const UInt32 SW_SHOW = 5; const UInt32 SW_MINIMIZE = 6; const UInt32 SW_SHOWMINNOACTIVE = 7; const UInt32 SW_SHOWNA = 8; const UInt32 SW_RESTORE = 9; ... private void GetPlacement() { WINDOWPLACEMENT placement = new WINDOWPLACEMENT(); placement.length = Marshal.SizeOf(placement); GetWindowPlacement(this.Handle, ref placement); } } !!!!VB Sample Code: 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 !!!!Alternative Managed API: The ManagedWindowsApi project (http://mwinapi.sourceforge.net) provides a class ManagedWinapi.SystemWindow that has a Position property. Documentation: GetWindowPlacement@msdn on MSDN
Edit user32.GetWindowP...
You do not have permission to change this page. If you feel this is in error, please send feedback with the contact link on the main page.