2014-10-11 9 views
0

SendMessage을 사용하여 마우스 클릭을 배경 창 (Chrome)에 게시하려고합니다. 이는 제대로 작동하지만 클릭 할 때마다 창을 앞에 가져옵니다. 그걸 피할 ​​수있는 방법이 있습니까?백그라운드 창에서 마우스 클릭 시뮬레이션

누구나 중복 질문이라고 말하기 전에 내가 찾을 수 없기 때문에 다른 항목에서 실제로 대상 창을 활성화하지 않는다는 것을 명심하십시오.

업데이트 : 아하, 창을 숨기면 거의 트릭을합니다. 의도 한대로 마우스/키보드 이벤트를 시뮬레이션하여 화면에 표시되지 않습니다. 그러나 컴퓨터 마우스를 사용하여 마우스를 간신히 사용할 수 있으며 키보드 입력이 완전히 중단되었습니다.

제 질문은 윈도우에 메시지를 보내는 것이 다른 응용 프로그램에 어떻게 영향을 줍니까? 이후 마우스/키보드 이벤트를 실제로 시뮬레이트하지 않기 때문에 다른 윈도우가이 작업을 완전히 잊어 버리지 않아야합니까? 을 받으면 SetCapture을 호출하는 창과 관련이 있습니까? 그리고 API 호출을 연결하는 것 이외에는 어떻게 피할 수 있습니까? (작은 작업에서는 매우 추악합니다)?

+0

어째서 Chrome에 클릭을 보내기를 원하십니까? 당신이 설명한대로 작동한다면 그것은 나에게 좋은 보안 기능처럼 보입니다. – mvp

+0

Clicker Heroes 봇을 쓰고 있습니까? : P – Domi

답변

0

WM_LBUTTONDOWN이 아닌 WM_MOUSEACTIVATE 메시지에 대한 응답으로 (클릭했을 때) 시스템이 제공하는 기본 처리 (DefWindowProc)로 인해 창이 전면에옵니다.

WM_LBUTTONDOWN에 대한 응답으로 Chrome이 전면에 오게된다는 사실은 Chrome이 어떤 방식 으로든 방지 할 수있는 기본 시스템 동작이 아니라 Chrome에서 구체적으로 수행하고 있음을 나타냅니다.

Chrome의 소스 코드를 사용할 수 있습니다. Chrome을 실제로보고 있는지 확인해 보시기 바랍니다. 그렇다면 Chrome의 자체 버전을 컴파일하는 것보다 짧은 것을 방지 할 수있는 유일한 실제 방법은 Chrome의 프로세스 및 하위 클래스에 코드를 삽입하는 것입니다.

+0

사실, 클릭하려고하는 Flash 앱입니다. Chrome이이 경우 마우스 클릭으로 어떤 일이 발생할지 결정하지 않았는지 확실하지 않습니다. 그러나 그것의 행동으로 판단 해 볼 때, 나는 그것이 SetCapture라고 부르는 것이 거의 확실하다. 나는 그 기능을 공중 납치하고 그것이 도움이 될지 지켜 볼 것입니다. – riv

+0

@riv Flash 응용 프로그램에 도착하려면 마우스를 클릭해야 Chrome을 통과해야합니다. 나는 크롬이 생각하기를 : 누군가가 당신의 브라우저를 망친다면 아마도 당신은 그것을 알고 싶어 할 것입니다. 큰 보안 기능이라고 생각합니다. – Domi

관련 문제