|
&를 넣어도 나는 에러라고 하셔서 보니
HTML을 얻는 소스는 별 이상이 없어 보입니다.
에러는 다른 이유로 나는 것 같군요.
빌더 6까지는 아래와 같은 소스를 가끔 사용합니다.
그런데 빌더 2006에서는 실험을 못해봐서 환경적인 차이인지
아니면 이미 다른 이유로 메모리가 침범 당했는지는 모르겠군요.
참고로, CppWebBrowser1을 폼에 떨궈만 놓고
초기화를 행하지 않은채 쓰려고 하면 말씀하신 에러가 발생합니다.
CppWebBrowser1은 반드시 쓰기 전에 한번은 초기화를 해줘야 합니다.
초기화는 아무 웹페이지나 로딩해도 좋고
CppWebBrowser1->Navigate(L"about:blank");
식으로 빈페이지를 설정해 줘도 됩니다.
이렇게 사용전 페이지를 로딩해야 하는 이유는
그래야먄 Document COM 객체가 로딩되어 메모리에 올라오기 때문입니다.
그리고난 후에 QueryInterface를 쓸수 있죠.
그럼 성공하세요.
qwer 님이 쓰신 글 :
: 김태선 님이 쓰신 글 :
: : hr = pDocument->QueryInterface(IID_IHTMLDocument2, (void**)&pDoc); <== 요렇게 고치세요.
: :
: : COM에 대해 개념을 충분히 잡고 만드시면 좋습니다.
: :
: : 그럼.
: :
: :
: : qwer 님이 쓰신 글 :
: : : 웹 브라우저를 이용해 HTML을 읽어온 뒤 HTML을 파일로 저장 후 파싱을 통해 특정 패턴을 찾아내는 프로그램을 만들려고 합니다. 게시판에 올라온 많은 분들의 TCppWebBrowser를 사용한 웹 브라우저 소스를 참고했는데 실행 시 메모리 참조 에러가 납니다. 초보인 저로써는 도대체 뭐가 잘못된 것인지 알수가 없네요.
: : : 고수분들의 도움을 바랍니다.
: : :
: : : 아래는 참고한 소스입니다.
: : :
: : :
: : : ==================================================================================================
: : : IDispatch *pDocument=CppWebBrowser1->Document;
: : : IHTMLElement *HTMLElement;
: : : IHTMLDocument2 *pDoc;
: : : HRESULT hr;
: : :
: : : WideString HTML;
: : : WideString Text;
: : :
: : : hr = pDocument->QueryInterface(IID_IHTMLDocument2, (void**)pDoc); <== 요기서 에러가 납니다.
: : : if(hr == S_OK)
: : : {
: : : hr = pDoc->get_body(&HTMLElement);
: : : if(hr == S_OK)
: : : {
: : : HTMLElement->get_innerHTML(&HTML);
: : : HTMLElement->get_innerText(&Text);
: : : HTMLElement->Release();
: : : }
: : : pDoc->Release();
: : : }
: : : Memo1->Lines->Clear();
: : : Memo1->Lines->Add(HTML);
: : : ==================================================================================================
:
: 답변해 주셔서 감사합니다.
: 원래 소스에서 &pDoc로 했었는데도 동일한 에러가 발생했습니다.
: 제가 이것저것 막 편집하는 과정에서 빠진 것 같네요 -_-;
:
: 김태선님께서 말씀하신대로
: hr = pDocument->QueryInterface(IID_IHTMLDocument2, (void**)&pDoc);
:
: 이렇게해서 실행해도 동일한 에러가 납니다.
: 제가 COM에 대해서 전혀 모르고 VC만 사용해 본 터라 잘 모르겠습니다.
: (만해님의 OleVarient인가? 하는 버전으로 해봤는데도 실행시에 에러가 발생합니다.)
: 혹시 빌더 버전에 따라 틀린건가요?
: 제가 사용하는 빌더는 2006입니다.
:
: 답변 부탁드립니다.
|