이미지와 글귀

반응형

System.Windows.Automation 클래스를 이용하여 인터페이스를 긁어오다보면 'NonComVisibleBaseClass' 예외 설정 오류가 생깁니다. try catch문으로도 예외 처리가 안 되고 내부 라이브러리에서 나오는 에러이기 때문에 코딩으로 해결하기 어려운 상황이지요. 


foreach (AutomationElement element in elements)

{

string strElementName = element.Current.Name; 

// COM에서 확인이 불가능한 인터페이스는 Current.Name만 호출해도 오류!

}

"'NonComVisibleBaseClass' 관리 디버깅 도우미가 '(Debug 폴더 경로)'에서 문제를 발견했습니다.


추가 정보 : COM 노출 관리 클래스 'MS.Internal.AutomationProxies.NonClientArea'의 클래스 인터페이스를 요청하는 QueryInterface를 호출했습니다. 하지만 이 클래스는 COM 노출 클래스가 아닌 'MS.Internal.AutomationProxies.ProxyHwnd'에서 파생되므로 QueryInterface를 호출할 수 없습니다. 이것은 COM 노출 기본 클래스가 아닌 클래스가 COM 버전 관리 규칙에 의해 제약을 받지 않도록 하기 위한 것입니다.


이 예외에 대한 처리기가 있으면 프로그램을 안전하게 계속할 수 있습니다."


그렇다면 해결 방법은 무엇일까요?

Visual Studio 2015 기준으로 정리해보았습니다.





메뉴에서 '디버그' - '창' - '예외 설정' 을 클릭합니다.




아래와 같이 뜰 것입니다. '검색' 입력칸에서 NonComVisibleBaseClass 을 검색합시다.





이것을 체크 해제하고 빌드하면 됩니다.




체크 해제 완료 후에 디버깅하면 관련 오류 메세지가 뜨지 않고 잘 돌아가는 것을 확인할 수 있습니다.

반응형

이 글을 공유합시다

facebook twitter googleplus kakaoTalk kakaostory naver band