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 을 검색합시다.
이것을 체크 해제하고 빌드하면 됩니다.
체크 해제 완료 후에 디버깅하면 관련 오류 메세지가 뜨지 않고 잘 돌아가는 것을 확인할 수 있습니다.
WPF TextBox 여러 줄이 입력되도록 설정하기 (0) | 2018.07.30 |
---|---|
C# CefSharp.Core.dll 오류 해결 (0) | 2018.06.20 |
[C#]CefSharp ChromiumWebBrowser 팝업(Popup) 이벤트 제어하기 (0) | 2018.06.19 |
[C#, WPF]WebBrowser 자바스크립트(javascript) 실행하기 (0) | 2018.06.12 |