이전에 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;
        }
    }
}

'작업공간 > 내 맘대로 프로젝트' 카테고리의 다른 글

마우스 클릭 매크로 ( C# 버전 )  (11) 2010.04.25
부족전쟁 약탈량 계산기  (0) 2009.07.02
마우스 클릭 매크로  (14) 2009.07.01
  1. BlogIcon 구차니 2010.04.25 23:17 신고

    자 이제 그럼 하드웨어 오토 마우스를 제작해주세요 (응? ㅋㅋ)
    저같은 경우에는 예전 XP 시절에 .net framework 깔았다가 성능이 한 30% 대로 저하되는 바람에
    그 이후로 .net 알레르기가 생겨서.. 아직까지 VC6++을 고집하는데 저만 그런 문제를 겪은건가요?

    • BlogIcon 친절한티스 2010.04.26 08:32 신고

      워낙 2005/2008에 익숙해져서 인지 성능 저하는 잘 모르겠네요 ㅋㅋㅋ 게다가 C#이 너무 편해서 (윈폼 너무 좋아염 하앜하앜) 쓰면 쓸수록 좋은것 같아요. 이러다 MFC 다시는 못 쓸 듯.

  2. BlogIcon 해피버드 2010.04.26 09:39 신고

    우왕 주말에도 포스팅 하는 티스아제다 ㅋㅋ

  3. dngpgp 2010.05.04 06:57 신고

    음... 소스 가져가서 붙여넣고 테스트 해봤는데.... 전혀 무반응이네요...;
    첨엔 폼 로드가 없어서 빌드도 안됐었는데... 폼 로드 넣어주고 테스트 해봤더니...
    키프레스도 안먹히공.... 음..... 풀코드 소스라고하셨으니깐.... 선언문좀 알려주실수?....ㅎㅎ;;
    분명히 뭔가 빠졌는뎅.... 흠.. 참고... 2008 C#입니다.

    • BlogIcon 친절한티스 2010.05.04 08:35 신고

      그냥 갖다 붙이시면 안되구요.
      함수에서 On으로 시작하는 함수는 이벤트 함수입니다.
      OnClickStart는 시작 버튼 클릭 했을때 발생하는 이벤트 함수구요.
      OnKeyPress는 에디트박스에서 키 입력 됐을대 발생하는 이벤트 함수죠.
      위의 두 이벤트 함수를 설정하시고, 작성하시면 동작할거예요.

  4. Du 2011.04.27 17:40 신고

    저기 혹시 c#으로 스마트폰으로 클릭 버튼을 누르면 실제 윈도우 마우스상에서 클릭이 되게끔

    할수있는 소스점 구할수있을까요? ㅠㅠ 부탁드립니다 ..

    du0315@naver.com 으로 부탁드려요 네이트도 가능하구요 ..; 실력이 한참 부족하네요 ㅠㅠ

  5. 고마워요 ㅎㅎ 2011.12.16 13:05 신고

    마비노기 생산수련하는데는 이게 딱이네요 ㅋㅋ
    전 버전은 마우스포인트가 살짝씩 오른쪽으로 움직이던데 이번건 고쳐졌네요 ㅎㅎ

  6. BlogIcon 녹색별 2018.07.17 12:43 신고

    소스 참고해보겠습니다. 감사합니다~!

+ Recent posts