2014-11-21 3 views
2

keybd_event()를 사용하여 특정 키를 원격 데스크톱 응용 프로그램에 전달하려고합니다. 간단한 테스트를 위해 원격 세션에서 메모장을 열면 keybd_event() 호출이 메모장에서 현재 사용자 포커스가있는 로컬 컴퓨터에서 실행됩니다.keybd_event() 호출이 원격 데스크톱으로 전송되지 않습니다.

불행히도 원격 데스크톱으로 어떤 입력도 보내지 않는 것처럼 보입니다.

포커스가있는 메모장의 로컬 인스턴스가 포함 된 응용 프로그램을 로컬 컴퓨터에서 실행하면 정확히 아무 것도 입력 할 필요가 없습니다.

아무도 아이디어가 작동하지 않는 이유가 있습니까? 분명히 원격 데스크톱 세션에 수동으로 입력 할 수 있습니다.

감사

+0

마우스 오른쪽 버튼을 클릭하고 관리자 권한으로 프로그램을 실행 해보십시오. 키 이벤트 및 마우스 이벤트를 작업 관리자에게 보내고 관리자가 실행되면서 문제가 발생했습니다. – Brandon

+0

응답 해 주셔서 감사합니다. Brandon, 불행히도 우리는 아무 소용이 없다고 시도했습니다. – Raiden616

+0

다른 원격 데스크톱 프로그램을 사용해 보셨습니까? (예 : TeamViewer) 표준 RDP에는 문제가있는 것이 일반적이지만 다른 프로그램에서는 이러한 이상한 제한이없는 경우가 많습니다. – Ilya

답변

1

모든 원격 데스크톱 프로그램은 중재자이며, 원격 시스템을 연결하는 관문입니다. 임의의 방법 (예 : keybd_event, SendInput, PostMessage 등)을 통해이 프로그램에 키보드 메시지를 보내는 것은 RDP 프로그램에 자동으로 반영됩니다. 단순히 소비하지 않고 연결된 자원에 전달하지 않습니다.

아마도 (필자는 잘 모르겠다) 프로그램이 문서를 작성하여 API를 문서에 첨부하여 세션을 닫거나 세션을 열거 나 메시지를 보내도록 할 수 있습니다. 주어진 API (함수, COM 인터페이스)를 사용하면 일 수 있습니다.은 연결된 리소스에 일부 입력을 보냅니다.

+0

원격 데스크톱 창은 다른 창과 마찬가지로 로컬 창이므로 다른 창과 마찬가지로 일반적인 사용자 입력으로 해석되어 그에 따라 원격 컴퓨터로 전송되는 입력 메시지가 해당 창에 전달 될 것으로 기대됩니다. RDP가'SetWindowsHookEx()'또는'RegisterRawInputDevices()'를 사용하여 시뮬레이션 된 입력과 물리적 입력을 구별하지 않는다면 가능성이 있습니다. –

+0

Ctrl + T 조합을 눌렀다 고 가정하십시오. 이것이 원격지로 전달 될 것인가? RDP 응용 프로그램 자체의 바로 가기라면 어떨까요? 간단히 말해서 RDP 앱은 메시지를 자체 방식으로 처리 할 것이고 결정을 내릴 때만 원격으로 전송할 것이라고합니다. 그런 응용 프로그램을 작성한다고 가정하십시오. 모든 사용자 유형이 원격으로 직접 이동한다고 생각합니까? 그렇다면 어떻게? – Ajay

관련 문제