2012-07-13 1 views
0

How to simulate Mouse Click in C#?에서 다음 코드를 사용하고 있는데 작동하지 않습니다. 나는 또한 여전히 mouse_event(MOUSEEVENTF_LEFTDOWN & MOUSEEVENT_LEFTUP...하지만 운 mouse_event(MOUSEEVENTF_LEFTDOWN | MOUSEEVENT_LEFTUP...를 교체 시도내가 말할 때 마우스가 클릭되지 않는 이유는 무엇입니까?

[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; 

    public void DoMouseClick() 
    { 
     mouse_event(MOUSEEVENTF_LEFTDOWN | MOUSEEVENTF_LEFTUP, 882, 554, 0, 0); 
    } 

    private void button1_Click(object sender, EventArgs e) 
    { 
     DoMouseClick(); 
    } 

: 여기에 코드입니다. 다른 사람들은 이것으로 성공을 거두었습니다 ... 왜 내가하지 않았습니까?

+0

실행중인 OS의 버전/비트 깊이는 어느 정도입니까? 하나의 호출에서 – RQDQ

+2

MOUSEEVENTF_LEFTDOWN 및 MOUSEEVENTF_LEFTUP ?? –

+0

@RQDQ Windows 7 –

답변

5

mouse_event()를 사용하면 안되며 SendInput()으로 대체되었습니다.

mouse_event()의 반환 유형이 공백입니다. Windows가 잘못하고 있다고 말할 수있는 방법이 없습니다. SendInput은 UINT를 반환하고 0을 반환하고 GetLastError를 통해 오류 코드를 표시하여 오류를보고합니다.

그리고 틀림없이 틀리게하고 있습니다. 버튼이 동시에 위아래로있는 마우스 이벤트를 보내는 것은 의미가 없습니다. 그것을 두 번 호출해야합니다. 먼저 아래로, 아래로.

+0

입력을 보내려면 어떻게해야합니까? –

+5

Google은 "C# sendinput"에 대해 44,500 회의 조회수를 기록하고 있습니다. –

관련 문제