저는 브라우저의 현재 웹 페이지에서 발생하는 HTML 이벤트를 수신하는 C#으로 작성된 BHO/툴바에서 작업 해 왔습니다. 이 솔루션에는 HtmlPageEventManager라는 재사용 가능한 클래스가 포함되어 있습니다.이 클래스의 목적은 열어 본 새 웹 페이지 각각에 대해 HTML 이벤트 목록을 구독하는 것입니다. 목표는 페이지로드가 완료되기 전에도 사용자가 페이지 요소와 상호 작용을 시작할 수있게되면 핸들러를 부착하는 것입니다. 이 클래스를 사용하면 간단합니다 - 그냥 생성자 호출BHO에서 HTML 이벤트 듣기
var evts = new List() { HtmlEvent.onclick, HtmlEvent.ondblclick, HtmlEvent.onkeydown, HtmlEvent.onselectstart, HtmlEvent.onselectionchange, HtmlEvent.onfocus, HtmlEvent.onselect }; new HtmlPageEventManager(this, evts, this.HtmlEventHandler);
하십시오 download my solution here 그것을 밖으로 시도하고 나에게 피드백을 보낼 수 있습니다. 자신의 프로젝트에서 유용하다고 생각되면 자유롭게 사용하십시오. 잘 작동하지만 이벤트를 첨부하지 못하는 경우가 있습니다. 나는 그 상황을 정확히 지적하는 데 어려움을 겪었다. 그래서 HtmlPageEventManager를 개선하는 데 도움이 될 수 있습니다.
내 솔루션은 SpicIE의 어셈블리를 참조하지만 위의 다운로드에는 포함되어 있지 않으므로 the SpicIE website에서 가져와야합니다. Btw, 아마도 이것은 SpicIE가 얼마나 인기가 있는지 묻기 좋은 시간 일 것입니다. 더 나은 도구를 사용할 수 있습니까?
HtmlPageEventManager가 이벤트를 첨부하지 못하는 재현 가능한 사례를 발견했습니다. 웹 페이지를 처음 열면 95 %의 시간 동안 정상적으로 작동합니다. 그러나 해당 페이지를 새로 고치면 이벤트 등록이 손실됩니다. 디버거를 살펴보면 모든 것이 예상대로 보입니다. Google 검색 (http://www.google.com/search?q=IWebBrowser2+detect+refresh)은 이것이 일반적인 문제인 것으로 나타났습니다. 이걸 혼자 할 시간이 없을 것 같지 않아. 이런 식으로 HtmlPageEventManager를 개선하는 데 관심이 있으시면 여기에 게시하거나 연락하십시오. – HappyNomad