코드

2012-03-20 1 views
1

내가 코드를 통해 바탕 화면에서 클릭을하기 위해 노력하고있어 클릭, 그래서 내가 그랬어 : 나는 내가 System.Windows.Forms.Cursor를 추가 할 경우에만 작동 실현코드

public static void MouseLeftClick(Point pos) 
    { 
     System.Windows.Forms.Cursor.Position = pos; 
     mouse_event(MOUSEEVENTF_LEFTDOWN, pos.X, pos.Y, 0, 0); 
     mouse_event(MOUSEEVENTF_LEFTUP, pos.X, pos.Y, 0, 0); 
    } 

. 위치 = pos; 왜? mouse_event x, y 매개 변수는 쓸모가 없습니까?

+0

'mouse_event'는 어떻게 생겼습니까? –

+0

일부 사람들은 투표를 좋아합니다. – Pedro77

답변

2

mouse_event 기능 중 description을 읽으셨습니까? 의

[DllImport("user32.dll")] 
private static extern void mouse_event(MouseEventFlags dwFlags, uint dx, uint dy, uint dwData, UIntPtr dwExtraInfo); 

... 

// Converts into pixels 
uint x = (uint)(pos.X * 65535/Screen.PrimaryScreen.Bounds.Width); 
uint y = (uint)(pos.Y * 65535/Screen.PrimaryScreen.Bounds.Height); 

// Moves the mouse (absolute) 
mouse_event(MouseEventFlags.MOVE | MouseEventFlags.ABSOLUTE, x, y, 0, UIntPtr.Zero); 

// Now button down 
mouse_event(MouseEventFlags.RIGHTDOWN, 0, 0, 0, UIntPtr.Zero); 
mouse_event(MouseEventFlags.RIGHTUP, 0, 0, 0, UIntPtr.Zero); 

: 예를 들어 만 RIGHTDOWN 사용

경우, 마우스가 설정되어있는 좌표를 표시하지 않는 X 및 Y 매개 변수 ..

여기

당신이 mouse _event 다룰 수있는 방법 물론, 커서 위치를 설정하는 것은 마우스가 움직였다는 것을 알리기 위해 mouse_event을 사용하는 것보다 훨씬 간단합니다.

btw이 함수는 대체되었습니다. 대신 SendInput을 사용하십시오.