C#에서 마우스 이벤트 에뮬레이션

2413 단어
주: 이 코드는 문제가 좀 있어서 그때 디버깅을 주의하지 않았어요.
사실 주로 보여드리는 거예요.
[DllImport("user32.dll")]
static extern void mouse_event(MouseEventFlag flags, int dx, int dy, uint data, UIntPtr extraInfo);
의 사용법, 이 코드에서 button1은 항상 초점이 있기 때문에MainFormKeyDown이 실행되지 않습니다.그런데 제가 다른 방법으로 마우스를 촉발했어요이벤트 결과 button1 클릭 이벤트가 실행되지 않았습니다.그건 내가 좀 더 연구해 볼게.
프로그램에서 마우스 자동 실행 이벤트도 사용할 수 있습니다.그것의 원리는user32를 호출하는 것이다.dll 방법으로 실행합니다.다음 코드는 마우스 자동 클릭 이벤트의 예입니다.새 c# 창 프로젝트를 만듭니다. 창에 button을 끌어다 놓고 button의 마우스 클릭 이벤트를 등록합니다.다음과 같습니다.
    public partial class MainForm : Form      {          public MainForm()          {              InitializeComponent();          }          private void button1_Click(object sender, EventArgs e)          {              MessageBox.Show("Button1    !");          }        }

user32를 호출할 클래스를 추가합니다.dll의 mouse이벤트 방법:
   public class MouseFlag      {          [DllImport("user32.dll")]            static extern void mouse_event(MouseEventFlag flags, int dx, int dy, uint data, UIntPtr extraInfo);            [Flags]          enum MouseEventFlag : uint          {              Move = 0x0001,              LeftDown = 0x0002,              LeftUp = 0x0004,              RightDown = 0x0008,              RightUp = 0x0010,              MiddleDown = 0x0020,              MiddleUp = 0x0040,              XDown = 0x0080,              XUp = 0x0100,              Wheel = 0x0800,              VirtualDesk = 0x4000,              Absolute = 0x8000          }          public static  void MouseLefDownEvent(int dx, int dy, uint data)          {              mouse_event(MouseEventFlag.LeftDown,dx, dy, data, UIntPtr.Zero);          }      }

테스트는 다음과 같습니다: 창에 KeyDown 이벤트를 추가하고 자동으로 클릭하는 방법을 호출합니다.
     public partial class MainForm : Form      {          public MainForm()          {              InitializeComponent();          }            private void button1_Click(object sender, EventArgs e)          {              MessageBox.Show("Button1    !");          }            private void MainForm_KeyDown(object sender, KeyEventArgs e)          {              MouseFlag.MouseLefDownEvent(this.button1.Location.X, this.button1.Location.Y,0);          }        }

실행 후 창에 초점이 있는 상태에서 키보드의 키를 누르면 button의 클릭 이벤트를 터치합니다. 그림:
 
 
관심 있을 수도 있습니다: c# 인터페이스 마우스 드래그 컨트롤이 부모 창이나 화면에 있는 절대 좌표

좋은 웹페이지 즐겨찾기