c#模擬鼠標(biāo)點擊
需要引用的dll
C#本身帶的類庫中沒有關(guān)于鼠標(biāo)操作的函數(shù)庫,需要引用微軟的dll,在visual studio中使用 nuget添加 mshtml 即可(Microsoft.mshtml)
主要函數(shù),及其方法參數(shù)釋義
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);
//移動鼠標(biāo)
public const int MOUSEEVENTF_MOVE = 0x0001;
//模擬鼠標(biāo)左鍵按下
public const int MOUSEEVENTF_LEFTDOWN = 0x0002;
//模擬鼠標(biāo)左鍵抬起
public const int MOUSEEVENTF_LEFTUP = 0x0004;
//模擬鼠標(biāo)右鍵按下
public const int MOUSEEVENTF_RIGHTDOWN = 0x0008;
//模擬鼠標(biāo)右鍵抬起
public const int MOUSEEVENTF_RIGHTUP = 0x0010;
//模擬鼠標(biāo)中鍵按下
public const int MOUSEEVENTF_MIDDLEDOWN = 0x0020;
//模擬鼠標(biāo)中鍵抬起
public const int MOUSEEVENTF_MIDDLEUP = 0x0040;
//標(biāo)示是否采用絕對坐標(biāo)
public const int MOUSEEVENTF_ABSOLUTE = 0x8000;
[DllImport("user32.dll")]
public static extern bool SetCursorPos(int X, int Y);
}
}
SetCursorPos 函數(shù)
把光標(biāo)移到屏幕的指定位置。(ps:是整個屏幕的坐標(biāo),相對于屏幕左上角的絕對位置)
參數(shù)
- X 指定光標(biāo)的新的X坐標(biāo),以屏幕坐標(biāo)表示。
- Y 指定光標(biāo)的新的Y坐標(biāo),以屏幕坐標(biāo)表示。 返回值
- 如果成功,返回非0值
- 如果失敗,返回值是0
mouse_event 函數(shù)
綜合鼠標(biāo)移動和按鈕點擊。該方法包含鼠標(biāo)左右移動及點擊操作。 參數(shù)
- dwFlags 標(biāo)志位集,指定點擊按鈕和鼠標(biāo)動作的多種情況。此參數(shù)可以是下列值的某種組合:
VALUE | MEANING |
---|
MOUSEEVENTF_ABSOLUTE | dX和dY參數(shù)含有規(guī)范化的絕對坐標(biāo)。如果不設(shè)置,這些參數(shù)含有相對數(shù)據(jù):相對于上次位置的改動位置。此標(biāo)志可設(shè)置,也可不設(shè)置,不管鼠標(biāo)的類型或與系統(tǒng)相連的類似于鼠標(biāo)的設(shè)備的類型如何。要得到關(guān)于相對鼠標(biāo)動作的信息,參見下面?zhèn)渥⒉糠?/td> |
MOUSEEVENTF_MOVE | 鼠標(biāo)移動 |
MOUSEEVENTF_LEFTDOWN | 鼠標(biāo)左鍵按下 |
MOUSEEVENTF_LEFTUP | 鼠標(biāo)左鍵松開 |
MOUSEEVENTF_RIGHTDOWN | 鼠標(biāo)右鍵按下 |
MOUSEEVENTF_RIGHTUP | 鼠標(biāo)右鍵松開 |
MOUSEEVENTF_MIDDLEDOWN | 鼠標(biāo)中鍵按下 |
MOUSEEVENTF_MIDDLEUP | 鼠標(biāo)中鍵松開 |
MOUSEEVENTF_WHEEL | 鼠標(biāo)輪被滾動,如果鼠標(biāo)有一個滾輪。滾動的數(shù)量由dwData給出 |
- dx 指定鼠標(biāo)沿x軸的絕對位置或者從上次鼠標(biāo)事件產(chǎn)生以來移動的數(shù)量,依賴于MOUSEEVENTF_ABSOLUTE的設(shè)置。給出的絕對數(shù)據(jù)作為鼠標(biāo)的實際X坐標(biāo);給出的相對數(shù)據(jù)作為移動的mickeys數(shù)。一個mickey表示鼠標(biāo)移動的數(shù)量,表明鼠標(biāo)已經(jīng)移動。
- dy 指定鼠標(biāo)沿y軸的絕對位置或者從上次鼠標(biāo)事件產(chǎn)生以來移動的數(shù)量,依賴于MOUSEEVENTF_ABSOLUTE的設(shè)置。給出的絕對數(shù)據(jù)作為鼠標(biāo)的實際y坐標(biāo),給出的相對數(shù)據(jù)作為移動的mickeys數(shù)。
- dwData 如果dwFlags為MOUSEEVENTF_WHEEL,則dwData指定鼠標(biāo)輪移動的數(shù)量。正值表明鼠標(biāo)輪向前轉(zhuǎn)動,即遠(yuǎn)離用戶的方向;負(fù)值表明鼠標(biāo)輪向后轉(zhuǎn)動,即朝向用戶。一個輪擊定義為WHEEL_DELTA,即120。如果dwFlagsS不是MOUSEEVENTF_WHEEL,則dWData應(yīng)為零。
- dwExtraInfo 指定與鼠標(biāo)事件相關(guān)的附加32位值。應(yīng)用程序調(diào)用函數(shù)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 編輯過