diff -r 000000000000 -r f6eca6facd07 Win32API.cs --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/Win32API.cs Sat Jun 14 12:51:25 2014 +0200 @@ -0,0 +1,100 @@ +//============================================================================= +// COPYRIGHT: Prosoft-Lanz +//============================================================================= +// +// $Workfile: Win32API.cs $ +// +// PROJECT : CodeProject Components +// VERSION : 1.00 +// CREATION : 19.02.2003 +// AUTHOR : JCL +// +// DETAILS : This class implement Win32 API calls +// and the contants used for these calls. +// +//----------------------------------------------------------------------------- +using System; +using System.Text; +using System.Drawing; +using System.Windows.Forms; +using System.Runtime.InteropServices; + +namespace CodeProject.Win32API +{ + /////////////////////////////////////////////////////////////////////// + #region Generic declarations + + /// + /// Rectangle parameters exposed as a structure. + /// + public struct RECT + { + /// + /// Rectangle members. + /// + public int left, top, right, bottom; + } + + #endregion + + /////////////////////////////////////////////////////////////////////// + #region Util class + + /// + /// Utility functions. + /// + public sealed class API + { + private API() {} // To remove the constructor from the documentation! + + /// + /// Get true multiscreen size. + /// + public static Rectangle TrueScreenRect + { + get + { + // get the biggest screen area + Rectangle rectScreen = Screen.PrimaryScreen.WorkingArea; + int left = rectScreen.Left; + int top = rectScreen.Top; + int right = rectScreen.Right; + int bottom = rectScreen.Bottom; + foreach (Screen screen in Screen.AllScreens) + { + left = Math.Min(left, screen.WorkingArea.Left); + right = Math.Max(right, screen.WorkingArea.Right); + top = Math.Min(top, screen.WorkingArea.Top); + bottom = Math.Max(bottom, screen.WorkingArea.Bottom); + } + return new Rectangle(left, top, right-left, bottom-top); + } + } + } + + #endregion + + /////////////////////////////////////////////////////////////////////// + #region USER32 class + + /// + /// Class to expose USER32 API functions. + /// + public sealed class USER32 + { + private USER32() {} // To remove the constructor from the documentation! + + [DllImport("user32", CharSet = CharSet.Auto, CallingConvention = CallingConvention.StdCall)] + internal static extern int GetWindowRect(IntPtr hWnd, ref RECT rect); + + [DllImport("user32", CharSet = CharSet.Auto, CallingConvention = CallingConvention.StdCall)] + internal static extern int MoveWindow(IntPtr hWnd, int x, int y, int w, int h, int repaint); + + [DllImport("user32", CharSet = CharSet.Auto, CallingConvention = CallingConvention.StdCall)] + internal static extern IntPtr GetActiveWindow(); + + [DllImport("user32", CharSet = CharSet.Auto, CallingConvention = CallingConvention.StdCall)] + internal static extern int GetClassName(IntPtr hwnd, StringBuilder lpClassName, int nMaxCount); + } + #endregion +}