c#模擬鼠標點擊
需要引用的dll
C#本身帶的類庫中沒有關于鼠標操作的函數庫,需要引用微軟的dll,在visual studio中使用 nuget添加 mshtml 即可(Microsoft.mshtml)
主要函數,及其方法參數釋義
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Runtime.InteropServices;
namespace workhelper
{
class MouseHelper
{
[System.Runtime.InteropServices.DllImport("user32")]
public static extern int mouse_event(int dwFlags, int dx, int dy, int cButtons, int dwExtraInfo);
//移動鼠標
public const int MOUSEEVENTF_MOVE = 0x0001;
//模擬鼠標左鍵按下
public const int MOUSEEVENTF_LEFTDOWN = 0x0002;
//模擬鼠標左鍵抬起
public const int MOUSEEVENTF_LEFTUP = 0x0004;
//模擬鼠標右鍵按下
public const int MOUSEEVENTF_RIGHTDOWN = 0x0008;
//模擬鼠標右鍵抬起
public const int MOUSEEVENTF_RIGHTUP = 0x0010;
//模擬鼠標中鍵按下
public const int MOUSEEVENTF_MIDDLEDOWN = 0x0020;
//模擬鼠標中鍵抬起
public const int MOUSEEVENTF_MIDDLEUP = 0x0040;
//標示是否采用絕對坐標
public const int MOUSEEVENTF_ABSOLUTE = 0x8000;
[DllImport("user32.dll")]
public static extern bool SetCursorPos(int X, int Y);
}
}
SetCursorPos 函數
把光標移到屏幕的指定位置。(ps:是整個屏幕的坐標,相對于屏幕左上角的絕對位置)
參數
- X 指定光標的新的X坐標,以屏幕坐標表示。
- Y 指定光標的新的Y坐標,以屏幕坐標表示。 返回值
- 如果成功,返回非0值
- 如果失敗,返回值是0
mouse_event 函數
綜合鼠標移動和按鈕點擊。該方法包含鼠標左右移動及點擊操作。 參數
- dwFlags 標志位集,指定點擊按鈕和鼠標動作的多種情況。此參數可以是下列值的某種組合:
VALUE | MEANING |
---|
MOUSEEVENTF_ABSOLUTE | dX和dY參數含有規范化的絕對坐標。如果不設置,這些參數含有相對數據:相對于上次位置的改動位置。此標志可設置,也可不設置,不管鼠標的類型或與系統相連的類似于鼠標的設備的類型如何。要得到關于相對鼠標動作的信息,參見下面備注部分 |
MOUSEEVENTF_MOVE | 鼠標移動 |
MOUSEEVENTF_LEFTDOWN | 鼠標左鍵按下 |
MOUSEEVENTF_LEFTUP | 鼠標左鍵松開 |
MOUSEEVENTF_RIGHTDOWN | 鼠標右鍵按下 |
MOUSEEVENTF_RIGHTUP | 鼠標右鍵松開 |
MOUSEEVENTF_MIDDLEDOWN | 鼠標中鍵按下 |
MOUSEEVENTF_MIDDLEUP | 鼠標中鍵松開 |
MOUSEEVENTF_WHEEL | 鼠標輪被滾動,如果鼠標有一個滾輪。滾動的數量由dwData給出 |
- dx 指定鼠標沿x軸的絕對位置或者從上次鼠標事件產生以來移動的數量,依賴于MOUSEEVENTF_ABSOLUTE的設置。給出的絕對數據作為鼠標的實際X坐標;給出的相對數據作為移動的mickeys數。一個mickey表示鼠標移動的數量,表明鼠標已經移動。
- dy 指定鼠標沿y軸的絕對位置或者從上次鼠標事件產生以來移動的數量,依賴于MOUSEEVENTF_ABSOLUTE的設置。給出的絕對數據作為鼠標的實際y坐標,給出的相對數據作為移動的mickeys數。
- dwData 如果dwFlags為MOUSEEVENTF_WHEEL,則dwData指定鼠標輪移動的數量。正值表明鼠標輪向前轉動,即遠離用戶的方向;負值表明鼠標輪向后轉動,即朝向用戶。一個輪擊定義為WHEEL_DELTA,即120。如果dwFlagsS不是MOUSEEVENTF_WHEEL,則dWData應為零。
- dwExtraInfo 指定與鼠標事件相關的附加32位值。應用程序調用函數GetMessageExtraInfo來獲得此附加信息
使用示例
MouseHelper.SetCursorPos(Form1.point.X, Form1.point.Y);
MouseHelper.mouse_event(MouseHelper.MOUSEEVENTF_LEFTDOWN, 0, 0, 0, 0);
MouseHelper.mouse_event(MouseHelper.MOUSEEVENTF_LEFTUP, 0, 0, 0, 0);
該文章在 2021/1/29 16:16:57 編輯過