#region
|
|
using System.Drawing;
|
using System.Runtime.InteropServices;
|
using System.Windows.Forms;
|
|
#endregion
|
|
namespace CSFrameworkV5.UserCustom
|
{
|
public class GZLockMouse
|
{
|
/// <summary>
|
/// 指定区域锁定鼠标
|
/// </summary>
|
/// <param name="r"></param>
|
/// <returns></returns>
|
[DllImport("User32")]
|
public static extern int ClipCursor(ref Rect r);
|
|
/// <summary>
|
/// 获得指定句柄RECT结构
|
/// </summary>
|
/// <param name="h"></param>
|
/// <param name="r"></param>
|
/// <returns></returns>
|
[DllImport("User32")]
|
public static extern int GetWindowRect(int h, ref Rect r);
|
|
/// <summary>
|
/// 锁定鼠标
|
/// </summary>
|
/// <param name="Start"></param>
|
/// <param name="End"></param>
|
public static void Lock(Point Start, Point End)
|
{
|
var GZRect = new Rect();
|
GZRect.Left = Start.X;
|
GZRect.Top = Start.Y;
|
GZRect.Right = End.X;
|
GZRect.Bottom = End.Y;
|
ClipCursor(ref GZRect);
|
}
|
|
/// <summary>
|
/// 锁定鼠标在指定句柄区域
|
/// </summary>
|
/// <param name="Handle"></param>
|
public static void Lock(int Handle)
|
{
|
var formRect = new Rect();
|
GetWindowRect(Handle, ref formRect);
|
ClipCursor(ref formRect);
|
}
|
|
/// <summary>
|
/// 锁定鼠标在指定RECT结构
|
/// </summary>
|
/// <param name="rt"></param>
|
internal static void Lock(Rect rt)
|
{
|
ClipCursor(ref rt);
|
}
|
|
/// <summary>
|
/// 释放鼠标
|
/// </summary>
|
/// <param name="sender"></param>
|
/// <param name="e"></param>
|
public static void Unlock()
|
{
|
var GZRect = new Rect();
|
GZRect.Left = 0;
|
GZRect.Top = 0;
|
GZRect.Bottom = Screen.PrimaryScreen.Bounds.Bottom;
|
GZRect.Right = Screen.PrimaryScreen.Bounds.Right;
|
ClipCursor(ref GZRect);
|
}
|
|
public struct Rect
|
{
|
public int Left;
|
public int Top;
|
public int Right;
|
public int Bottom;
|
}
|
}
|
}
|