C++Builder Programming Forum
C++Builder  |  Delphi  |  FireMonkey  |  C/C++  |  Free Pascal  |  Firebird
볼랜드포럼 BorlandForum
 경고! 게시물 작성자의 사전 허락없는 메일주소 추출행위 절대 금지
C++빌더 포럼
Q & A
FAQ
팁&트릭
강좌/문서
자료실
컴포넌트/라이브러리
메신저 프로젝트
볼랜드포럼 홈
헤드라인 뉴스
IT 뉴스
공지사항
자유게시판
해피 브레이크
공동 프로젝트
구인/구직
회원 장터
건의사항
운영진 게시판
회원 메뉴
북마크
볼랜드포럼 광고 모집

C++빌더 팁&트릭
C++Builder Programming Tip&Tricks
[683] 현재 떠 있는 IE에 선택적으로 자바스크립트 호출하기
김태선 [cppbuilder] 8723 읽음    2007-07-23 13:41
이 팁은 이전에 박영목님께서 올려주신 execScript을 이용한 자바호출과 거의 같은 것입니다.
먼저 자료를 작성해 놓으신 박영목님께 감사의 말씀을 드립니다.

여기서는 C++빌더 2007에서 매우 간편한 방법으로
원하는 IE를 확인하고 그기에 있는 자바스크립터를 호출하는 예제로 꾸며봤습니다.


//---------------------------------------------------------------------------
#include <SHDocVw.hpp>
#include <MSHTML.h>

// IHTMLWindow2의 execScript을 이용한 자바호출

void ExecScript(IHTMLDocument2* doc, String script)
{
    if (!doc)
        return;

    IHTMLWindow2*  win;
    HRESULT  hr = doc->get_parentWindow(&win);
    if (SUCCEEDED(hr))
    {
        try
        {
            VARIANT  v;
            VariantInit(&v);
            win->execScript( WideString(script), WideString("javascript"), &v );
            VariantClear(&v);
        }
        __finally
        {
            win->Release();
        }
    }
}

// 자바스크립트 호출 테스트.

void __fastcall TForm4::Button4Click(TObject *Sender)
{
    TShellWindows* ShellWin = new TShellWindows(NULL);
    IWebBrowser2* IE;
    try
    {
        for(int i = 0; i < ShellWin->Count; i++)
        {
            if (ShellWin->Item(i) == NULL)
                continue;
            ShellWin->Item(i)->QueryInterface(IID_IWebBrowser2, (void **)&IE);
            if (IE == NULL)
                continue;
            if (IE->LocationURL.SubString(1, 7) != "http://")
                continue;

            IHTMLDocument2* doc;
            if (SUCCEEDED((IE->Document->QueryInterface(IID_IHTMLDocument2, (void**)&doc))))
            {
                Form4->Memo1->Lines->Add(IE->LocationURL);

                char  cmd[300];
                wsprintf(cmd, "alert('코드기어포럼 %s')", String(IE->LocationURL).c_str());
                ExecScript(doc, cmd);
                doc->Release();
            }
        }
    }
    __finally
    {
        delete ShellWin;
    }

}
//---------------------------------------------------------------------------

이 정도 예제면 충분히 원하는대로 고쳐서 쓸수 있을 것으로 생각됩니다.

            if (IE->LocationURL.SubString(1, 7) != "http://")
                continue;
부분에서 적당히 수정하면 원하는 사이트를 필터링 할수 있습니다.
이 정도는 초보도 할수 있으므로 따로 설명을 하지 않습니다.

이 팁은 실무에 너무나 유용한 것입니다.

이걸 VC에서 하려면 상당한 힘을 들여야 하는데 빌더는 너무나 간편하죠. 빌더 만세!
하지만 델파이는 조금 더 간편하게 할수 있다는거...

그럼.
장성호 [nasilso]   2007-07-23 13:59 X
빨리   2007 구매해서 확인해봐야겠네요
2007에 대한 팁/자료/ Q&A 등는 확인해 볼수가 없으니 답답...!
김태선 [cppbuilder]   2007-07-23 14:01 X
공감입니다.
김태선 [jsdkts]   2007-07-28 15:02 X
음 TurboC++ 2006 에서도 되는군요.

+ -

관련 글 리스트
683 현재 떠 있는 IE에 선택적으로 자바스크립트 호출하기 김태선 8723 2007/07/23
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.