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