2023年12月18日发(作者:)
c# 调用API控制鼠标移动单击双击以及滚轮的公共类
using System;
using ;
using pServices; using g;
using ;
namespace KeyboardHook
{
///
/// Mouse buttons that can be pressed
///
public enum MouseButton
{
Left = 0x2,
Right = 0x8,
Middle = 0x20
}
///
/// Operations that simulate mouse events
///
public static class MouseSimulator
{
#region Windows API Code
[DllImport("")]
static extern int ShowCursor(bool show);
[DllImport("User32")]
public extern static void SetCursorPos(int x, int y);
[DllImport("")]
static extern void mouse_event(int flags, int dX, int dY, int
buttons, int
extraInfo);
[DllImport("")]
static extern void PostMessage(IntPtr hWnd, int Msg, int wParam,
uint
lParam);
const int MOUSEEVENTF_MOVE = 0x1;
const int MOUSEEVENTF_LEFTDOWN = 0x2;
const int MOUSEEVENTF_LEFTUP = 0x4;
const int MOUSEEVENTF_RIGHTDOWN = 0x8;
const int MOUSEEVENTF_RIGHTUP = 0x10;
const int MOUSEEVENTF_MIDDLEDOWN = 0x20;
const int MOUSEEVENTF_MIDDLEUP = 0x40;
const int MOUSEEVENTF_WHEEL = 0x800;
const int MOUSEEVENTF_ABSOLUTE = 0x8000;
const int WM_MOUSEMOVE = 0x200;
const int WM_LBUTTONDOWN = 0x201;
const int WM_RBUTTONDOWN = 0x204;
const int WM_MBUTTONDOWN = 0x207;
const int WM_LBUTTONUP = 0x202;
const int WM_RBUTTONUP = 0x205;
const int WM_MBUTTONUP = 0x208;
#endregion
#region Properties
///
/// Gets or sets a structure that represents both X and Y mouse
coordinates
///
public static Point Position
{
get
{
return new Point(on.X, on.Y);
}
set
{
on = value;
}
}
///
/// Gets or sets only the mouse's x coordinate
///
public static int X
{
get
{
return on.X;
}
set
{
on = new Point(value, Y);
}
}
///
/// Gets or sets only the mouse's y coordinate
///
public static int Y
{
get
{
return on.Y;
}
set
{
on = new Point(X, value);
}
}
#endregion
#region Methods
///
/// Press a mouse button down
///
///
public static void MouseDown(MouseButton button)
{
mouse_event(((int)button), 0, 0, 0, 0);
}
public static void MouseDown(IntPtr hWnd, MouseButton button,int
x,int y)
{
switch (button)
{
case :
PostMessage(hWnd, WM_LBUTTONDOWN,1 ,32( (x + (y
<< 16))));
break;
case :
PostMessage(hWnd, WM_RBUTTONDOWN, 1, 32((x + (y
<< 16))));
break;
case :
PostMessage(hWnd, WM_MBUTTONDOWN, 1, 32((x + (y
<< 16))));
break;
}
}
///
/// Let a mouse button up
///
///
public static void MouseUp(MouseButton button)
{
mouse_event(((int)button) * 2, 0, 0, 0, 0);
}
public static void MouseUp(IntPtr hWnd, MouseButton button, int x,
int y)
{
switch (button)
{
case :
PostMessage(hWnd, WM_LBUTTONUP, 0, 32((x + (y <<
16))));
break;
case :
PostMessage(hWnd, WM_RBUTTONUP, 0, 32((x + (y <<
16))));
break;
case :
PostMessage(hWnd, WM_MBUTTONUP, 0, 32((x + (y <<
16))));
break;
}
}
///
/// Click a mouse button (down then up)
///
///
public static void Click(MouseButton button)
{
MouseDown(button);
MouseUp(button);
}
public static void Click(IntPtr hWnd, MouseButton button,int x,int y)
{
MouseDown(hWnd, button, x, y);
MouseUp(hWnd, button, x, y);
}
///
/// Double click a mouse button (down then up twice)
///
///
public static void DoubleClick(MouseButton button)
{
Click(button);
Click(button);
}
public static void DoubleClick(IntPtr hWnd, MouseButton button, int
x, int
y)
{
Click(hWnd, button, x, y);
Click(hWnd, button, x, y);
}
///
/// Roll the mouse wheel. Delta of 120 wheels up once normally, -120
wheels
down once normally
///
///
public static void MouseWheel(int delta)
{
mouse_event(MOUSEEVENTF_WHEEL, 0, 0, delta, 0);
}
///
/// Show a hidden current on currently application
///
public static void Show()
{
ShowCursor(true);
}
///
/// Hide mouse cursor only on current application's forms
///
public static void Hide()
{
ShowCursor(false);
}
///
/// Press a mouse button down
///
///
public static void MouseDown(MouseButtons button)
{
switch (button)
{
case :
MouseDown();
break;
case :
MouseDown();
break;
case :
MouseDown();
break;
}
}
///
/// Let a mouse button up
///
///
public static void MouseUp(MouseButtons button)
{
switch (button)
{
case :
MouseUp();
break;
case :
MouseUp();
break;
case :
MouseUp();
break;
}
}
///
/// Click a mouse button (down then up)
///
///
public static void Click(MouseButtons button)
{
switch (button)
{
case :
Click();
break;
case :
Click();
break;
case :
Click();
break;
}
}
///
/// Double click a mouse button (down then up twice)
///
///
public static void DoubleClick(MouseButtons button)
{
switch (button)
{
case :
DoubleClick();
break;
case :
DoubleClick();
break;
case :
DoubleClick();
break;
}
}
#endregion
}
}


发布评论