mouse_event함수는 인수로 지정한 내용의 Mouse Event를 발생시킵니다.
Declare Sub mouse_event Lib "user32" Alias "mouse_event" (ByVal dwFlags As Integer, ByVal dx As Integer, ByVal dy As Integer, ByVal cButtons As Integer, ByVal dwExtaInfo As Integer)
▶VB.NET 선언
mouse_event(flag, x, y, cbtn, 0)
▶VB.NET 호출
[DllImport("user32.dll")]
public static extern void mouse_event(int dwFlags, int dx, int dy, int cButtons, int dwExtaInfo);
▶C# 선언
mouse_event(flag, x, y, cbtn, 0);
▶C# 호출
mouse_event함수의 인수중 dwFlags값은 어떤 Mouse Event를 발생시킬지 지정하는 것으로 다음과 같은 값을 건네줄 수 있습니다.
상수 | 값 | 설명 |
MOUSEEVENTF_ABSOLUTE | 8000 | x, y mouse의 위치값을 포함하여 event를 발생함 |
MOUSEEVENTF_MOVE | 1 | x, y에 지정한 위치로 이동 |
MOUSEEVENTF_LEFTDOWN | 2 | 왼쪽 button down |
MOUSEEVENTF_LEFTUP | 4 | 왼쪽 button up |
MOUSEEVENTF_RIGHTDOWN | 8 | 오른쪽 button down |
MOUSEEVENTF_RIGHTUP | 10 | 오른쪽 button up |
MOUSEEVENTF_MIDDLEDOWN | 20 | 가운데 button down |
MOUSEEVENTF_MIDDLEUP | 40 | 가운데 button up |
MOUSEEVENTF_WHEEL | 800 | mouse wheel 동작 |
표에서 값은 VB.NET의 경우 &H / C#의 경우 0x로 처리하여야 합니다.
dx와 dy는 화면상에 Mouse를 위치시킬 좌표를 지정합니다. 단 이 위치는 MOUSEEVENTF_MOVE와 MOUSEEVENTF_ABSOLUTE가 지정되어야 실제로 Mouse Cursor가 이동되는 효과를 볼 수 있습니다.
Mouse의 좌표 지정시 실제 Monitor화면의 해상도를 기준점으로 잡으려면 65535로 가로세로 해상도를 나누고 Mouse Cursor를 위치시킬 위치를 곱하면 됩니다. 예를 들어 화면 해상도가 1024*768일 경우 (65535 / 1024) * y, (65535 / 768) * y 와 같이 처리하시면 원하는 곳으로 이동하게 됩니다.
cButton인수에 MOUSEEVENTF_WHEEL을 지정하였을 경우 한번에 Scroll되는 횟수를 의미하게 되며 마지막 dwExtaInfo인수는 Mouse와 관련된 추가적인 정보값을 건네주는 인수입니다.(dwExtaInfo에는 특별한 경우가 아니면 0으로 지정합니다. 이 인수가 사용되는 경우는 일반적인 Mouse가 아닌 여러가지 기능적 Button이 더 추가된 특수한 Mouse일 경우등에 사용됩니다.)
Mouse Event지정시에는 or 단위를 통해 여러가지 동작을 한꺼번에 지정할 수 도 있습니다.
mouse_event(&H8 Or &H10, 0, 0, 0, 0)
▶VB.NET 호출
mouse_event(0x8 | 0x10, 0, 0, 0, 0);
▶C# 호출
위 예제는 Mouse 오른쪽 Button을 눌렀다가 다시 떼는 작업을 수행합니다.
'.NET > Windows API for .NET' 카테고리의 다른 글
GetCapture - Mouse Event입력 Handle반환 (0) | 2019.08.09 |
---|---|
GetDoubleClickTime - Mouse Double Click Timming (0) | 2019.08.09 |
SetDoubleClickTime - Mouse Double Click 감지 시간 설정 (0) | 2019.08.09 |
GetCursor - 현재 Mouse Cursor의 Handle값 획득 (0) | 2019.08.09 |
FindWindow - 현재 열려진 윈도우 찾기 (2) | 2019.08.09 |