[C#] 확장형 브라우져 AxWebBrowser -2


Development note/C#  2013. 10. 20. 09:59

안녕하세요. 명월입니다.


요즘 하루하루 날씨가 추워지고 있습니다.. 모두들 감기 조심하세요.

이번 포스팅에서는 예전에 포스팅 했던 AxWebBrowser에 대한 조금 더 자세한 설명(?)을 하겠습니다... (사실 이것과 관련된 문의가 있어서 그것에 대한 답변이 더 가깝네요 ^^)


링크 - http://nowonbun.tistory.com/187


예전에 포스팅 했을 때에는 스크래핑에 이용하기 위해 설명했던걸로 기억되네요...


그럼 먼저 이 브라우져를 썻을때의 문제점을 살펴 보겠습니다.

이 단축키가 먹는 문제점입니다... 저는 여태 윈도우만 해서 그냥 메시지를 잡으면 되겠거니라고 생각을 한 부분인데요... 이 부분은 컨트롤의 메시지가 아니고 msHtml 객체의 이벤트이더라구요.... 그래서 메시지에 나타나지가 않았습니다... 처음 봤을 때 순간 흠칫 당황했습니다..

이 객체는 100% 컨트롤이 힘든건가 하구요... 그런데 이벤트가 있었습니다.. 그 부분만 막으면 이벤트를 막을 수 있습니다.

위는 이벤트로 막는 부분이고 아래는 내부객체로 막는 부분입니다.. 이걸 두개 다 작성하실 껀 없고 상황에 맞게 하나만 작성해도 되겠습니다.


이벤트는 막았고 그다음엔 다운로드를 막는 것입니다.

자 요놈을 막는 건데... 요것도 이벤트가 있네요... 근데 이걸하면서 특이한게 내부객체가 없더라구요.... 이런 컨트롤은 또 첨봤습니다.. 그렇다고 메시지 잡아내서 내부객체 만들기도 귀찮으니깐 그냥 이벤트로 처리하겠습니다.

요녀석은 이벤트 내에 cancel 값이 있습니다. 그냥 이벤트 취소 시킨다고 하면 이 이벤트를 막을 수 있겠네요...


이번에는 팝업 제어 입니다... 이전 포스팅에서 한 것은 현재 폼이 모달리스로 폼을 호출하면서 부모 폼이 닫기면 전체가 닫기는 현상에 대한 것 입니다..


이 부분은 두가지를 생각해 봤는데요... 부모 폼을 큰 윈도우 제어 윈도우로 만들고 하위를 전부 모달리스로 호출하면 이 현상은 없어집니다.. 그러나 이건 뭐랄까 조금 복잡하고 상황에 맞지 않으면 낭비(?)적인 형태이겠네요...


가볍게 생각하면 그냥 프로그램을 재 호출하면 이 문제는 가볍게 풀릴 듯하네요...


뭐 위의 형태로 쓰이는 경우도 물론 있지만... 아마 큰 프로젝트에서 모든 컨트롤을 제어해야 할 경우에만 쓰이겠네요... 그냥 우리는 가볍게 가보겠습니다.


일단 문제는 이거겠네요.. 내가 원하는건 같은 창인데 익스플로러가 뜨는 현상

그냥 Url을 받아서 자기 자신을 호출하겠습니다.

프로세스로 자기 자신의 프로그램을 다시 실행시킵니다.

메인에서는 파라미터를 넘기면 생성자로 넘깁니다.

넘어 와서는 그 URL대로 Navigate를 호출하는 형태네요....

물론 창이 하나 꺼진다고 해서 다른 창에 영향이 가는건 아닙니다....


여기까지 설명입니다.. 궁금한 점이 있으면 댓글이나 메일 주세요...

예제 소스 첨부 합니다...

AxBrowserTest.zip