2013-05-22 1 views
1

우선, C++/C#/java 등에서 만 가능한 언어 별 솔루션이 있다면, 그 중 하나를 사용하여 잘 부탁드립니다. 현재 배경에있는 앱의 버튼을 클릭하려고하는데 보내기/게시물 메시지를 사용하여 '클릭'부분을 관리 할 수 ​​있습니다. 그래서 같이 :마우스 위치에 관한 앱을 속이는 것

여기
  SendMessage(Window, 0x201, 0, 700 * 0x10000 + 700); 

0x201입니다 왼쪽 마우스 버튼을 아래로 가정입니다 위치는 내가 그 메시지를 보낼 때 응용 프로그램 메신저 내 현재 마우스 위치에 따라 행위를 속일려고, 그러나 700

700해야한다 700,700이 아닙니다.

저는 이것이 바보짓을하려는 앱이 현재 마우스 위치를 찾았 기 때문에라고 생각합니다. 그걸 속일 방법이 있니?

답변

1

SendMessage과 같이 구현하면 안됩니다. 시스템은 이미 모든 종류의 작업을 처리했으며 메시지 큐에 도착하면 보낼 메시지를 결정했습니다. 원시 클릭 이벤트를 보내면 더 혼란 스러울뿐입니다.

대신 SendInput Win32 API call을 사용해야합니다. 상위 레벨에서 마우스 (및 다른 입력 장치) 동작을 에뮬레이트하고 결과 메시지 처리를 시스템에 허용합니다 실제 마우스가 마치 인 것처럼 처리합니다. 따라서 바보 같이 할 일이 없기 때문에 정의에 따라 모든 사람을 속일 것입니다 - 마우스는 모든 의도와 목적을 위해 지정된 위치로 실제로 이동했습니다.

mouse_event 전화를 더 쉽게 사용할 수도 있지만 공식적으로 권장되지 않으므로 SendInput이 좋습니다.

+0

여기에서 문제는 sendinput을 사용하면 실제 마우스를 사용하고 앱을 속여서는 안된다는 것입니다. 그렇게하는 동안 내 응용 프로그램은 마우스 자체를 사용하기 때문에 컴퓨터를 쓸모 없게 만들 것이고 "사용자"는 현재 원하는대로 할 수 없게됩니다. – claus78

+0

유일한 대안은 [Spy ++] (http://msdn.microsoft.com/en-us/library/aa264396(v=60) .aspx)를 설치하는 것입니다. 그것은 어떤 메시지가 동작에 의해 어떤 순서로 방송되는지를 정확하게 검사 할 수있게합니다. 예를 들어 마우스 클릭. 이 로그에서 정확한 순서를 재생할 수 있어야합니다. –

+0

OS와 OS가 다르거 나 같습니까? (Windows와 마찬가지로) 정확한 시퀀스를 어떻게 재생합니까? sendmessage로? – claus78