2011-10-16 4 views
0

또는이 질문을 명확히하기 위해 어떻게하면 Windows에서 실제로 키를 누르지 않았다고 생각할 수 있습니까? 아마도 SendMessage를 사용하여 입력을 지정할 수 있지만 내 응용 프로그램 만 수신하지는 않을 것입니다. "가짜"입력을받는 모든 응용 프로그램의 범위를 제어하고 싶습니다. 어떤 충고?Win32에서 키보드 입력을 어떻게 조작합니까?

+2

SendInput()을 사용하십시오. –

답변

1

다른 프로세스에서도 원하는 창에 SendMessage을 입력 할 수 있습니다. HWND_BROADCAST을 사용하여 시스템의 모든 수준 창으로 보낼 수도 있습니다. 그러나 당신이 정말로 원하는 것은 무엇입니까? 특정 프로그램에만 관심이있는 경우 FindWindow을 사용하여 창 핸들을 가져온 다음 해당 창에만 메시지를 보낼 수 있습니다.

당신이 원하는 것은 단지 다른 프로세스에 대한 간단한 키 입력 뿐이므로 SendInput이 실제로가는 길입니다. 일부 글로벌 키보드 바로 가기를 보내려는 경우 누가 그 중점을 둡니다. SendInput을 사용하여 동일한 입력을 여러 창에 보내려면 창 목록을 반복해야하고 각 창에 대해 먼저 포커스를 설정 한 다음 입력을 보냅니다.

+0

입력이 현재 포커스가있는 애플리케이션에 도달 할 수 있다면 괜찮습니다. 따라서이 경우 SendInput을 사용하면 더 나은 기능을 사용할 수 있습니다. 감사! – AutoBotAM

+0

SendInput은 가장 안전한 방법입니다. 가짜 입력에 SendInput을 사용하여 모든 종류의 예기치 않은 문제가 발생할 수 있습니다. 어떤 곳에서는 효과가있을 수 있지만 다른 사람들에게는 신비스럽게 실패합니다. (예 : 입력이 실제로 다른 창에서 처리 될 수 있거나 앱이 SendKey가 영향을 미치지 않는 GetKeyState를 사용하여 키보드 상태를 검사하거나 앱이 입력을 무시하거나 입력이 없을 때 입력을 받으면 별 행동 할 수 있음) 초점.) – BrendanMcK

5

입력 내용이 위조 된 내용은 SendInput 함수로 구현됩니다. 입력은 입력 포커스가있는 스레드로 이동합니다.

+0

이것은 유망 해 보인다. 감사! – AutoBotAM

관련 문제