날자별

5월 2017
« 2월    
1234567
891011121314
15161718192021
22232425262728
293031  

CHtmlView의 C++에서 생성한 JScript를 모든 Frame에 대해 Inject하여 실행하기

출처] http://greenfishblog.tistory.com/46

CHtmlView(CDHtmlDialog, CHtmlDialog)등에서 HTML을 로드하여 실행하게 됩니다.
혹시 이런 생각을 해보신적 있는지요?

기존 HTML 소스에 동적으로 JScript를 추가하고, 그 함수를 호출받고 싶다…
단, 추가할 JScript 소스는 C++에서 명시적으로 정의한다.

즉, 동일한 URL에 대해 기존의 일반 웹 브라우저와 조금 다른 웹(즉, 뭐.. 화면 상단에 강제적인 버튼 추과와 그 처리등등…)을 표현하고 싶다.
즉, C++에서 DocumentComplete Timing때, C++에서 정의한 JScript 함수를 넣는다. Body OnLoad()에 그 함수를 대체해서 넣는다. 즉, 기존 Html이

였다면,

와 같이 수정하면, inject()가 실행될 것입니다.
즉, C++의 DocumentComplete에서,

를 호출하는 것입니다.
이를 위한 소스 코드를 아래와 같이 공유합니다.
사용은 CHtmlView의 OnDocumentComplete나 DocumentComplete 때 아래 함수를 호출하면 됩니다.
(view plain을 누르시면 코드 확인이 쉽습니다.)

Leave a Reply