클리엘
CLIEL LAB
클리엘
전체 방문자
오늘
어제
  • 분류 전체보기 (514)
    • Mobile (47)
      • Kotlin (47)
    • Web (84)
      • NestJS (9)
      • HTML5 & CSS3 (38)
      • Javascript (20)
      • TypeScript (6)
      • JQuery (11)
    • .NET (301)
      • C# (84)
      • ASP.NET (67)
      • Windows API for .NET (128)
    • Server (53)
      • SQL Server (10)
      • MariaDB (18)
      • Windows Server (6)
      • node.js (19)
    • System (12)
      • 작업LOG (12)
    • Review (11)
    • ETC (6)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

  • 블로그 정리

인기 글

태그

  • JavaScript
  • node.js
  • exception
  • ASP.NET
  • NestJS
  • c#
  • LINQ
  • Kotlin
  • MariaDB
  • jQuery
  • asp.net core
  • HTML5
  • 변수
  • Windows API
  • android
  • CSS3
  • .NET
  • Entity Framework
  • android studio
  • asp.net core web api

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
클리엘

CLIEL LAB

.NET/Windows API for .NET

mouse_event - Mouse Event 발생

2019. 8. 9. 16:35
728x90

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을 눌렀다가 다시 떼는 작업을 수행합니다.

728x90
저작자표시 비영리 변경금지 (새창열림)

'.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
    '.NET/Windows API for .NET' 카테고리의 다른 글
    • GetCapture - Mouse Event입력 Handle반환
    • GetDoubleClickTime - Mouse Double Click Timming
    • SetDoubleClickTime - Mouse Double Click 감지 시간 설정
    • GetCursor - 현재 Mouse Cursor의 Handle값 획득
    클리엘
    클리엘
    누구냐 넌?

    티스토리툴바