2009-07-03 3 views
1

사용자가 효율적으로 사용하기에는 너무 복잡한 제 3 자 Windows 응용 프로그램이 있습니다. 이 응용 프로그램은 하루에 3000 개의 문서를 스캔하는 데 사용하는 스캐너를 관리합니다.다른 응용 프로그램의 모달 대화 상자 팝업 차단

스캐너 응용 프로그램은 키보드를 사용하여 완전히 조종 할 수 있습니다.

그러므로 우리는 SendKeys을 사용하는 작은 버튼과 스캐너 애플리케이션에 키 스트로크를 보내기위한 Win32 API 호출을 사용하는 간단한 WinForms 애플리케이션을 작성하는 중입니다. 우리는이 WinForms 응용 프로그램을 전체 화면으로 만들고 Z- 주문의 맨 위로 설정할 계획입니다.

그러나 스캐너 응용 프로그램은 때때로 모달 대화 상자 (예 : 스캐너 용지 걸림)에 오류 메시지를 표시합니다. WinForms 응용 프로그램에 이러한 오류 메시지를 표시해야합니다.

누구든지 이러한 오류 메시지를 캡처하여 사용자에게 보여줄 수있는 기술을 제안 할 수 있습니까?

답변

2

이것이 가장 효율적인 방법인지는 모르겠지만 이러한 오류 메시지를 식별 할 수있는 방법이 있다고 가정하면 열려있는 모든 창을 한 번씩 반복하는 루프를 만들 수 있으며 그 중 하나를 찾으십시오 오류 창.

탐색 할 수있는 또 다른 가능한 방향은 다른 앱에 사용자의 dll을 삽입하고 전달 된 메시지를 보는 것입니다. 나는 당신이 그 메시지를 확인할 수있을 것이라고 말할 수는 없으며 나는 지금 더 이상의 연구를 할 수는 없지만 그것이 가능해야한다고 생각합니다. 그냥 스파이 + +와 같은 다른 메시지가 팝업되면 다른 응용 프로그램 및 관련 메시지를 식별합니다.

+0

모달 창이 항상 동일한 제목을 가지고 있기 때문에 타이머에서 FindWindow를 사용하여 얻을 수 있습니다. 이제는 내 WinForms 응용 프로그램 창과 관련하여 모달로 설정해야합니다. 어떻게 생각하니? –

+0

이 방법이 가능하지 않을지 모르지만 이미 GUI를 보여주고 있기 때문에 자신의 모달 창에 표시 할 메시지의 내용을 읽지 않으시겠습니까? 그들은 아마도 같은 창과 동일한 텍스트 필드를 사용하여 오류를 제시합니다. 오류 메시지 필드를 식별하고 텍스트를 잡고 자신의 창에 표시하면됩니다. – eran

+0

나는 SetParent 및/또는 SetWindowLong의 조합을 사용하여 모달 윈도우를 reparent 할 수 있어야한다고 확신한다. –

관련 문제