C# 마우스 클릭, 위치정보 가져오기
- 마우스 위치정보 가져오기
마우스 위치의 정보를 가져오는건 매우 쉽습니다.
Cursor.Position.X.ToString();
Cursor.Position.Y.ToString();
이렇게 Cursor 라는 객체를 이용하여 바로 가져올 수 있습니다.
private static System.Timers.Timer aTimer;
public Form1()
{
InitializeComponent();
init_variables();
//타이머 시작
aTimer = new System.Timers.Timer(100);
aTimer.Elapsed += timerFunction;
aTimer.Enabled = true;
}
private void timerFunction(object sender, System.Timers.ElapsedEventArgs e)
{
//throw new NotImplementedException();
label_X.Text = "X - " + Cursor.Position.X.ToString();
label_Y.Text = "Y - " + Cursor.Position.Y.ToString();
}
이렇게 0.1초마다 timeFunction 함수를 실행시키는 timer를 생성하여 Label에 X, Y 위치를 바꿔주도록 하면
실시간으로 마우스의 위치정보 (X, Y) 좌표를 가져옵니다.
- 마우스 클릭 이벤트 발생시키기
아래와 같이 user32.dll을 Import 해주셔야 마우스 이벤트를 발생시킬 수 있습니다.
[DllImport("user32.dll", CharSet = CharSet.Auto, CallingConvention = CallingConvention.StdCall)]
public static extern void mouse_event(uint dwFlags, uint dx, uint dy, uint cButtons, uint dwExtraInfo);
private const int MOUSEEVENTF_LEFTDOWN = 0x02;
private const int MOUSEEVENTF_LEFTUP = 0x04;
private const int MOUSEEVENTF_RIGHTDOWN = 0x08;
private const int MOUSEEVENTF_RIGHTUP = 0x10;
mouse_event는 user32.dll 안에 있는 함수이며, 아래 변수는 각 dwFlags의 의미에 대한 선언문 정도로 생각해주셔도 됩니다.
좌클릭 이벤트 발생시키기:
mouse_event(MOUSEEVENTF_LEFTDOWN | MOUSEEVENTF_LEFTUP, (uint)Cursor.Position.X, (uint)Cursor.Position.Y, 0, 0);
우클릭 이벤트 발생시키기:
mouse_event(MOUSEEVENTF_RIGHTDOWN | MOUSEEVENTF_RIGHTUP, (uint)Cursor.Position.X, (uint)Cursor.Position.Y, 0, 0);
첫번째인수: 좌클릭 or 우클릭
두번째인수: X좌표 (직접 X를 입력해주셔도 되고, Cursor.Position.X 로 현재 마우스 위치를 가져오셔도 됩니다.)
세번째인수: Y좌표
- 마우스 현재위치를 0.1초에 한번씩 자동으로 좌클릭 하는 프로그램 소스
private static System.Timers.Timer aTimer;
public Form1()
{
InitializeComponent();
init_variables();
//타이머 시작
aTimer = new System.Timers.Timer(100);
aTimer.Elapsed += timerFunction;
aTimer.Enabled = true;
}
private void timerFunction(object sender, System.Timers.ElapsedEventArgs e)
{
mouse_event(MOUSEEVENTF_LEFTDOWN | MOUSEEVENTF_LEFTUP,
(uint)Cursor.Position.X, (uint)Cursor.Position.Y, 0, 0);
}