2010-05-21 1 views
1

저는 하나의 창에서 다른 창으로 이동하기 위해 보내기 키를 사용하는 Windows 응용 프로그램이 있습니다. 내 키 시퀀스 보내기는 내 앱에서 다른 창을 활성화하고 키 입력을 해당 창에 보내는 것과 같습니다. 그러나 내가 보내고있는 키 스트로크는 다른 창을 활성화하는 동일한 창에서 업데이트되고 있습니다..NET의 sendkeys에 문제가 있습니다.

그러나 몇 번의 키 입력으로 다른 창으로 이동합니다. 보내기 키와 동기화 문제가있는 것 같습니다. 다음 송신 키를 보내기 전에 현재 송신 키의 조작이 완료되었음을 지정하는 방법이 있습니까?

답변

0

SendKeys.SendWait을 사용해 보셨나요? 이것은 키가 전송 될 때까지 대기하고 액션이 처리되기 전에 처리됩니다.

Windows는 사용자의 응용 프로그램에 있으므로 SendKeys를 사용하는 대신 작업을 수행하는 기능 세트를 제공하지 않는 것이 좋습니다. 함수는 Activated 이벤트를 처리하여 감지 할 수있는 창을 생성하고 활성화 한 후에 창을 만들 수 있습니다. 실제로 필요한 경우 SendKeys를 사용하여 새 창에 키 입력을 보낼 수 있습니다. 그렇지 않으면 다시 창 클래스에 함수가 있습니다. 키 스트로크가 유발할 조작을 수행하기 위해 호출 할 수 있습니다. 이 상호 작용을 용이하게하기 위해 Windows가 구현하는 공통적 인 interface을 정의 할 수 있습니다.

+0

예, SendKeys.SendWait 메서드 만 사용하고 있습니다. 기다려야하는 시간을 지정하는 방법이 있습니까 –

+0

플러시 메서드 – zapping

+0

@zapping을 시도하십시오. 정확히 SendWait의 기능과 같으며 키를 게시 한 다음 플러시를 호출합니다. 두 번째 시간 플러시를 호출하는 것은 타이밍에 따라 작동하거나 작동하지 않을 수 있으며, 항상 의존하는 것이 위험합니다. @@AvidProgrammer, 문제는 그 때 열쇠가 보내질 때 취한 조치는 기본적으로 메시지를 게시하고 즉각 반환하므로 SendWait을 쓸모 없게 만드는 PostMessages internall을 사용하여 완료된다는 것입니다. IMHO에서는 전화 사이에 예술적으로 잠을 자지 못하는 것이 끔찍할 것입니다. –

2

나는 sendkey가 신뢰할 만하다는 것을 발견했다. 대신 input simulator을 사용해보십시오.

+0

sendkeys를 사용하여 앱을 추가 할 때, .net 2 프레임 워크 용으로 빌드했을 때 예상대로 작동하지 않았지만 (방금 오류 메시지가 표시되지는 않았지만) 대상 프레임 워크를 방금 변경했을 때 .net 4 완벽하게 작동했습니다! 놀랍지 않니? – BornToCode