조회 수 43108 추천 수 0 댓글 0
?

단축키

Prev이전 문서

Next다음 문서

크게 작게 위로 아래로 댓글로 가기 인쇄
?

단축키

Prev이전 문서

Next다음 문서

크게 작게 위로 아래로 댓글로 가기 인쇄
쩝.. 가르치는데는 소질이 없어서..
질문에 대한 답변은 일단 스스로 학습법을 통해서 배우시길 권장합니다.

그냥 BHO에 구동되는 원리만 설명을 드리겠습니다.

Browser Helper Object라고 하는 놈은 Internet Explorer의 인스턴스에 연결되어 Explorer의 액션을 제어하고 발생되는 이벤트들을 알아내는 역할을 해줍니다.

BHO이 구동되는 원리는
Explorer이 구동될때 특정 레지스트리에 등록에 CLSID에 값을 읽어서 Load하게끔 되어 있는데..

HKLM
{
    SOFTWARE
    {
        Microsoft
        {   
            Windows
            {
                CurrentVersion
                {
                    Explorer
                    {
                        'Browser Helper Objects'
                        {

이 위치가 됩니다.

물론 여기에 등록만 되어 있다고 해서 등록된 Dll들이 Load되서 이벤트를 감시하고 제어가 되는건 아닙니다.
일정 규약에 맞게끔 인터페이스가 지원되야 하고 규정된 메써드를 밖으로 노출시켜야 합니다.

그 규정된 인터페이스가 IObjectWithSite라는 놈이고,
IObjectWithSite인터페이스에 있는 SetSite메써드를 Explorer에서 호출하게끔 되어 있는겁니다.
HRESULT Cbhotest::SetSite(IUnknown *pUnkSite)
{
    m_spWebBrowser2 = pUnkSite; 
    if (m_spWebBrowser2 == NULL)
        return E_INVALIDARG;

    m_spCPC = m_spWebBrowser2;

    if (m_spCPC == NULL) 
        return E_POINTER;

    RetrieveBrowserWindow();

    return Connect();
}

Connect()함수는 Explorer에서 SetSite는 자동으로 불려져서 호출됩니다.
그 다음부터는 Invoke함수에서 Explorer에서 발생되는 이벤트를 감지/제어가 가능해 지는거죠.
아니면 Explorer에 윈도우 메세지를 후킹해서 샘플에서 종료를 막는다거나.. 하는 일들을 하게되는 거죠.


ExDisPID.h
이 파일을 한번 열어 보셨으면 금방 아실텐데요.
이건 Explorer의 이벤트 ID가 정의되어 있는 헤더파일입니다.

다른 궁금하신 사항들 검색을 해보시거나, 아님 관련 서적을 찾으시면 금방 아실 수 있는 내용이구요.
되도록이면 com관련 서적을 한번 보시는 것을 추천합니다.
?

List of Articles
번호 분류 제목 글쓴이 날짜 조회 수
41 Develop [js] 스크롤을 포함한 마우스 위치 찾는 코드 hooni 2003.04.23 8505
40 Develop [js] 쿠키(cookie)에 대한 설명과 예제.. hooni 2003.04.23 8321
39 Develop [php] URL/URI 관련 환경변수 hooni 2003.04.23 9163
38 Develop [js] 자바스크립트로 응용프로그램 실행 ㅎㅎ hooni 2003.04.23 9812
37 Develop [php] 쉘에서 실행할 때 인수(파라미터) 받기.. hooni 2003.04.23 11597
36 Develop [js] 자바스크립트 이벤트 핸들.. hooni 2003.04.23 7908
35 Develop [css] 화면 스크롤 제어 ㅋㅋ hooni 2003.04.23 8681
34 Develop [php] 배열 관련 함수 설명 ㅎㅎ hooni 2003.04.23 11748
33 Develop [c++]현승이가 보내준 암호화 모듈 AES라인델.. file hooni 2003.04.23 10715
32 Develop [c++]현승이가 보내준 동영상 암호화 자료.. 볼것.. file hooni 2003.04.23 9729
31 Develop [php] 니우쪽지다.. 받아라~ ^^ file hooni 2003.04.23 9836
30 Develop [c] 민수형 libipq 샘플 소스 ㅋㅋ hooni 2003.04.23 14113
29 Develop [css] 스크롤바 안생기게 hooni 2003.04.23 9887
28 Develop [c] 프로그래밍 ppt, 스킬업 (비트 수업자료) file hooni 2003.04.23 8179
27 Develop [c++] p.118 확인학습 5번 hooni 2003.04.23 10736
26 Develop [c++] p.58 연습문제 2번 hooni 2003.04.23 16298
Board Pagination Prev 1 ... 49 50 51 52 53 Next
/ 53