이전에 MFC 버전 마우스 클릭 매크르롤 제작한 적 있습니다.
뭐 그닥 불편 없기는 했지만, 마우스 위치 오차등 약간 문제가 있었고, C#으로도 한번 제작해보까? 하는 생각에 뚝딱~ 만들어봤습니다. 소스코드도 얼마 안되니 풀소스 코드도 공개합니다.



public partial class MainForm : Form
{
[DllImport("user32.dll")]
static extern void keybd_event(byte vk, byte scan, int flags, ref int extrainfo);
[DllImport("user32.dll")]
static extern void mouse_event(uint dwFlags, uint dx, uint dy, uint dwData, int dwExtraInfo);
private const uint MOUSEMOVE = 0x0001; // 마우스 이동
private const uint ABSOLUTEMOVE = 0x8000; // 전역 위치
private const uint LBUTTONDOWN = 0x0002; // 왼쪽 마우스 버튼 눌림
private const uint LBUTTONUP = 0x0004; // 왼쪽 마우스 버튼 떼어짐
private bool m_bStart = false;
private System.Timers.Timer m_ClickTimer;
public MainForm()
{
InitializeComponent();
m_ClickTimer = new System.Timers.Timer();
m_ClickTimer.Elapsed += new System.Timers.ElapsedEventHandler(ClickTimeEvent);
}
private void OnClickStart(object sender, EventArgs e)
{
m_bStart = !m_bStart;
m_ClickTimer.Enabled = m_bStart;
if( !m_bStart )
{
btn_Start.Text = "시작";
txt_Time.ReadOnly = false;
}
else
{
btn_Start.Text = "중지";
txt_Time.ReadOnly = true;
m_ClickTimer.Interval = Convert.ToUInt32(txt_Time.Text.ToString());
}
}
private void ClickTimeEvent(object sender, System.Timers.ElapsedEventArgs e)
{
MouseClick(System.Windows.Forms.Cursor.Position);
}
private void MouseClick(Point pos)
{
mouse_event(LBUTTONDOWN, 0, 0, 0, 0);
mouse_event(LBUTTONUP, 0, 0, 0, 0);
}
private void OnKeyPress(object sender, KeyPressEventArgs e)
{
if (e.KeyChar < 48 || e.KeyChar > 57)
{
MessageBox.Show("숫자만 입력 가능합니다.", "오류");
txt_Time.Text = "";
e.Handled = true;
}
}
}

+ Recent posts