들입다 어려운 질문을 들입다 어려운 방법으로 답해보겠습니다.
일단 저도 해본 일이 없으므로 된다는 보장은 없지만 도움이 되시길 바라면서...
1. 문제 해결을 위한 조건
1.1일단 VC로 IE의 이벤트를 구현한 IWebBrowserEvent2 인터페이스를 직접 컨트롤 하셔야 합니다.
1.2 ATL에 대해 조금 아셔야 합니다
2. 해결해 봅시다!!
먼저 아래 URL을 보시면 CodeProject에서 팝업 블로커를 구현한 예제가 있습니다.
http://www.codeproject.com/atl/popupblocker.asp
이 예제의 소스를 보면 팝업 블로커는 단지 IE의 이벤트를 핸들할 수 있는 클래스를 구현하여 이벤트 핸들러로 등록한 후 새 창이 뜰 때 발생하는 DISPIP_NEWWINDOW2 이벤트를 받아 Cancel 비트를 true로 만들어 버려 새 창 생성을 취소하는 원리입니다.
ActiveX 컨트롤을 방지하는 것도 같은 원리일 것이라 생각이 되네요.
Platform SDK에 IE에서 사용하는 Dispatch ID 목록이 선언된 Dhtmldid.h 파일을 열어보면
DISPID_ACTIVATEACTIVEXCONTROLS라는 넘이 있습니다.
아마도 ActiveX 컨트롤을 활성화할 때 발생하는 이벤트가 아닐까 생각이 되고요.
요 이벤트가 발생할 때 해당 이벤트를 Cancel 시키면 가능하지 않을까 하는 소견을 내어봅니다.
일단 원리는 그렇고요.. support.microsoft.com에 가셔서 DISPID_ACTIVATEACTIVEXCONTROLS로 검색을 해보시면 IE는 아니지만 Office를 VB.NET으로 제어하는 방법이 나옵니다.
대상이 Office일 뿐 원리는 동일하므로 해당 아티클들을 참고해 보시면 조금은 맨땅에 헤딩을 덜 하시게
될거라 생각이 되네요.
도움이 되셨기를...
도움이 되셨기를...