2013-01-06 4 views
2

자동화 된 테스트 라이브러리에서 작업 중이며 SendInput Win32 API을 사용하여 마우스 및 키보드 입력을 시뮬레이트하고 싶습니다. 이 API는 한 번의 호출로 여러 입력 항목을 API로 푸시 할 수있게합니다. SendInput을 사용하는 웹에는 다른 여러 예제와 유사한 라이브러리가 있습니다. 대부분의 API는 API 호출마다 단일 입력 작업을 전달합니다. 입력을 일괄 처리하거나 SendInput에 대한 호출 당 단일 입력을 사용하면 어떤 이점이 있습니까? 설명서가 지침을 제공하지 않는 것 같습니다. 아니면 내가 잘못 읽고 있습니다.SendInput API 사용에 대한 유용한 정보

+1

(나는 ... 내부, SendInput을 그냥 어쨌든 전달 된 입력에 걸쳐 반복되는 것을 확신) 다른 키보드 또는 마우스 입력 이벤트가 산재되어 있지 않습니다. "_ 키 조합 **을 보내는 경우 다른 입력 이벤트가 키보드 상태를 매치하지 못하도록 일괄 처리로 보내는 것이 가장 좋습니다. – IInspectable

+0

가장 좋은 방법은 SendInput을 사용하지 않는 것입니다 **. UI 자동화에 대한 기존 지원을 사용하십시오. http://msdn.microsoft.com/en-us/library/ee684009%28v=VS.85%29.aspx –

+3

@HansPassant :이 작업은 실제로 수행하려는 작업에 따라 다릅니다. UIA는 UI 조작에 대한 기본적인 지원 만하고 있으며 마우스/키보드를 통해 수행되는 것과 동일한 작업과 일치하지 않는 경우도 있습니다. 테스트 자동화의 일반적인 패턴은 UIA를 사용하여 작업 전후에 예상대로 UI 상태를 읽고 확인하고 대상 UI 요소의 위치를 ​​결정하지만 SendInput을 사용하여 실제 조작을 수행하는 것입니다. 또한 단축키 또는 끌기와 같은 사용자 지정 마우스 이벤트와 같은 일부 유형의 입력 작업은 UIA에서 지원하지 않으므로 SendInput이 필요합니다. – BrendanMcK

답변

0

내가 아는 한 가지 기술과 다른 기술에는 실질적인 이점이 없습니다. 두 경우 모두 SendInput의 일반적인 잠재적 인 문제점은 입력을 보낼 때와 입력이 대상 응용 프로그램에 의해 수신 될 때 입력 포커스가 변경 될 수 있다는 것입니다. 고전적인 예는 비동기 적으로 표시되는 모달 대화 상자로 사용자에게 몇 가지 문제를 경고하고 포커스를 훔치고 다른 곳으로 가야 할 나머지 입력을 흡수합니다. 이 시나리오에서 일련의 SendInputs와 하나의 SendInput을 수행하는 것 사이에는 차이가 없습니다. _ "이러한 이벤트 :

내가 문서에서 읽을 수 있었던 유일한 힌트는이이었다

관련 문제