2013-03-05 3 views
2

저는 기존 Win32 응용 프로그램의 자동화 테스트를 수행하기 위해 C# 응용 프로그램을 작성하고 있습니다. 이 테스트에는 응용 프로그램 실행, 단추 누르기 및 레이블 텍스트 읽기를 통한 결과 확인이 필요합니다. 내 테스트 플랫폼은 .NET 2.0으로 제한되어 있으므로 내 응용 프로그램에서는 System.Windows.Automation을 사용할 수 없습니다..NET 자동화없이 레이블의 텍스트 읽기

user32.dll에있는 WinAPI 호출을 사용하여 단추와 같은 컨트롤과 상호 작용하는 방법에 대한 풍부한 정보가 있습니다. 그러나 레이블은 컨트롤이 아니며 WM_GETTEXT 메시지를 사용하기 위해 자신의 hWnd 핸들을 가지고 있지 않아 텍스트를 추출하는 방법을 찾을 수 없었습니다.

나는 과거에 레이블을 객체로 식별하고 텍스트를 읽을 수있는 엔터프라이즈 (비싼) 테스트 소프트웨어를 사용했습니다. 해당 소프트웨어의 도움말 파일은 어떻게 수행되는지를 막연하게 설명하고 Windows 라이브러리 호출을 모니터링하여 도움을줍니다.

그렇다면 Windows DLL을 사용하여 .NET에서 레이블 텍스트를 캡처하는 방법에 대한 아이디어가 있습니까?

+0

라벨이 컨트롤이 아니라는 것을 어떻게 알 수 있습니까? 흔히 레이블은 보통 'Static'이라는 윈도우 클래스를 사용합니다. Spy ++ (Visual Studio의) 또는 이와 유사한 도구를 사용하여 레이블이 컨트롤이 아니라는 주장을 확인 했습니까? – JimEvans

+0

나는 Spy ++와 오픈 소스 managedwinapi 도구/라이브러리를 시도했다. 이러한 도구는 .NET 기반 코드 부분에서 작동합니다. 이러한 레이블은 hWnd 핸들이있는 컨트롤입니다. 그러나 코드의 대다수는 실제로 구식 C/C++ Win32 자료입니다. 이러한 양식에서 레이블은 객체로 감지 할 수 없습니다. 심지어 이벤트 모니터링을 시도했지만 레이블이 변경 될 때 발생하는 이벤트를 감지 할 수 없습니다. – nicholas

+0

"정말 오래된 C/C++ Win32 항목"에는 레이블에 대한 창 핸들도 있습니다. Spy ++에서 이들이 나타나지 않는다면, 창은 텍스트를 변경하기 위해 창에서 일종의 직접 드로잉을 사용하고 있습니다. – JimEvans

답변

0

기존 Win32 응용 프로그램의 코드를 제어 할 수 없다고 가정합니다.

그래서, 이것은 아마도 끔찍한 생각입니다 (아니요, 실제로는 입니다). 하지만 최악의 시나리오로 생각할 마지막 장벽으로, 1) 프로그래밍 방식으로 활성 창에서 take a screen capture을 누른 다음 2) OCR 결과 이미지 (어쩌면 this)를 사용할 수 있습니다.

관련 문제