|
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156 |
- using System;
- using System.Runtime.InteropServices;
-
- namespace RenderHookAPI
- {
- [System.Security.SuppressUnmanagedCodeSecurity()]
- internal sealed class NativeMethods
- {
- private NativeMethods() { }
-
- internal static bool IsWindowInForeground(IntPtr hWnd)
- {
- return hWnd == GetForegroundWindow();
- }
-
- #region kernel32
-
- [DllImport("kernel32.dll")]
- public static extern IntPtr GetModuleHandle(string lpModuleName);
-
- #endregion
-
- #region user32
-
- #region ShowWindow
- /// <summary>Shows a Window</summary>
- /// <remarks>
- /// <para>To perform certain special effects when showing or hiding a
- /// window, use AnimateWindow.</para>
- ///<para>The first time an application calls ShowWindow, it should use
- ///the WinMain function's nCmdShow parameter as its nCmdShow parameter.
- ///Subsequent calls to ShowWindow must use one of the values in the
- ///given list, instead of the one specified by the WinMain function's
- ///nCmdShow parameter.</para>
- ///<para>As noted in the discussion of the nCmdShow parameter, the
- ///nCmdShow value is ignored in the first call to ShowWindow if the
- ///program that launched the application specifies startup information
- ///in the structure. In this case, ShowWindow uses the information
- ///specified in the STARTUPINFO structure to show the window. On
- ///subsequent calls, the application must call ShowWindow with nCmdShow
- ///set to SW_SHOWDEFAULT to use the startup information provided by the
- ///program that launched the application. This behavior is designed for
- ///the following situations: </para>
- ///<list type="">
- /// <item>Applications create their main window by calling CreateWindow
- /// with the WS_VISIBLE flag set. </item>
- /// <item>Applications create their main window by calling CreateWindow
- /// with the WS_VISIBLE flag cleared, and later call ShowWindow with the
- /// SW_SHOW flag set to make it visible.</item>
- ///</list></remarks>
- /// <param name="hWnd">Handle to the window.</param>
- /// <param name="nCmdShow">Specifies how the window is to be shown.
- /// This parameter is ignored the first time an application calls
- /// ShowWindow, if the program that launched the application provides a
- /// STARTUPINFO structure. Otherwise, the first time ShowWindow is called,
- /// the value should be the value obtained by the WinMain function in its
- /// nCmdShow parameter. In subsequent calls, this parameter can be one of
- /// the WindowShowStyle members.</param>
- /// <returns>
- /// If the window was previously visible, the return value is nonzero.
- /// If the window was previously hidden, the return value is zero.
- /// </returns>
- [DllImport("user32.dll")]
- internal static extern bool ShowWindow(IntPtr hWnd, WindowShowStyle nCmdShow);
-
- /// <summary>Enumeration of the different ways of showing a window using
- /// ShowWindow</summary>
- internal enum WindowShowStyle : uint
- {
- /// <summary>Hides the window and activates another window.</summary>
- /// <remarks>See SW_HIDE</remarks>
- Hide = 0,
- /// <summary>Activates and displays a window. If the window is minimized
- /// or maximized, the system restores it to its original size and
- /// position. An application should specify this flag when displaying
- /// the window for the first time.</summary>
- /// <remarks>See SW_SHOWNORMAL</remarks>
- ShowNormal = 1,
- /// <summary>Activates the window and displays it as a minimized window.</summary>
- /// <remarks>See SW_SHOWMINIMIZED</remarks>
- ShowMinimized = 2,
- /// <summary>Activates the window and displays it as a maximized window.</summary>
- /// <remarks>See SW_SHOWMAXIMIZED</remarks>
- ShowMaximized = 3,
- /// <summary>Maximizes the specified window.</summary>
- /// <remarks>See SW_MAXIMIZE</remarks>
- Maximize = 3,
- /// <summary>Displays a window in its most recent size and position.
- /// This value is similar to "ShowNormal", except the window is not
- /// actived.</summary>
- /// <remarks>See SW_SHOWNOACTIVATE</remarks>
- ShowNormalNoActivate = 4,
- /// <summary>Activates the window and displays it in its current size
- /// and position.</summary>
- /// <remarks>See SW_SHOW</remarks>
- Show = 5,
- /// <summary>Minimizes the specified window and activates the next
- /// top-level window in the Z order.</summary>
- /// <remarks>See SW_MINIMIZE</remarks>
- Minimize = 6,
- /// <summary>Displays the window as a minimized window. This value is
- /// similar to "ShowMinimized", except the window is not activated.</summary>
- /// <remarks>See SW_SHOWMINNOACTIVE</remarks>
- ShowMinNoActivate = 7,
- /// <summary>Displays the window in its current size and position. This
- /// value is similar to "Show", except the window is not activated.</summary>
- /// <remarks>See SW_SHOWNA</remarks>
- ShowNoActivate = 8,
- /// <summary>Activates and displays the window. If the window is
- /// minimized or maximized, the system restores it to its original size
- /// and position. An application should specify this flag when restoring
- /// a minimized window.</summary>
- /// <remarks>See SW_RESTORE</remarks>
- Restore = 9,
- /// <summary>Sets the show state based on the SW_ value specified in the
- /// STARTUPINFO structure passed to the CreateProcess function by the
- /// program that started the application.</summary>
- /// <remarks>See SW_SHOWDEFAULT</remarks>
- ShowDefault = 10,
- /// <summary>Windows 2000/XP: Minimizes a window, even if the thread
- /// that owns the window is hung. This flag should only be used when
- /// minimizing windows from a different thread.</summary>
- /// <remarks>See SW_FORCEMINIMIZE</remarks>
- ForceMinimized = 11
- }
- #endregion
-
- /// <summary>
- /// The GetForegroundWindow function returns a handle to the foreground window.
- /// </summary>
- [DllImport("user32.dll")]
- internal static extern IntPtr GetForegroundWindow();
-
- [DllImport("user32.dll")]
- [return: MarshalAs(UnmanagedType.Bool)]
- internal static extern bool SetForegroundWindow(IntPtr hWnd);
-
- [DllImport("user32.dll")]
- [return: MarshalAs(UnmanagedType.Bool)]
- internal static extern bool IsIconic(IntPtr hWnd);
-
- //Get window position
- [DllImport("user32.dll")]
- public static extern bool GetWindowRect(IntPtr hwnd, ref Rect rectangle);
-
- public struct Rect
- {
- public int Left { get; set; }
- public int Top { get; set; }
- public int Right { get; set; }
- public int Bottom { get; set; }
- }
-
- #endregion
- }
- }
|