|
OnNavigateComplete2 이벤트를 써보세요.
방태윤 님이 쓰신 글 :
: 흠 정석은 아니것 같고요...편법 정도는 될것 같은데요..
:
: : Memo1->Text = ""; //Memo1 Data Clear!!!
: : CppWebBrowser1->Navigate(url);
: :
: : //요기 사이에 뭔가 들어가던가 해야될듯한데...
: while(true){
: Applicataion->ProcessMessages();
: if(Memo1->Text.SubString(1,5)=="data=") break; //당근 Memo1->Text 는 초기화 시키고요..
: if(무한루프에 안빠지게 에러처리,시간초과같은것...)break;
: }
:
: :
: : if(Memo1->Text.SubString(1,5)=="data=")
: : {
:
: 이렇게 하면 될 같기도 하네요...
: 정석으로는 SetEvent 류의 동기함수를 쓰는거 일거 같기도 한데....ㅋ
: 그럼...
:
:
: 세즈 님이 쓰신 글 :
: : 인터넷 브라우져를 올려놓고
: : Navigate 함수를 사용하여 페이지를 띄우고
: : 그 띄운 결과에서 소스값을 받아서 데이터 처리를 하려고 합니다.
: : 띄운 결과에서 소스값이 나올려면 페이지가 다 뜬뒤에 소스를 받아서 연산처리를 거쳐 특정 값을 줘야만 하는데...
: : 이노무 것이 페이지가 다 뜨지도 않았는데 소스를 받으려고 하고 연산처리까지 빈 값으로 해버리더군요.
: : 이같은경우 wait 이라든지 다른 뭔가가 방법이 있을듯 한데요.
: : 혹시 이러한 문제를 해결하는 방법을 아시는분 계신가요???
: :
: :
: :
: :
: : Memo1->Text = ""; //Memo1 Data Clear!!!
: : CppWebBrowser1->Navigate(url);
: :
: : //요기 사이에 뭔가 들어가던가 해야될듯한데...
: :
: : if(Memo1->Text.SubString(1,5)=="data=")
: : {
: : NewNode->SubItems->Add(Get_nlevel(Memo1->Text.SubString(7,8)));
: : //ShowMessage("nlevel");
: : NewNode->SubItems->Add(Get_ntemp(Memo1->Text.SubString(7,8)));
: : //ShowMessage("ntemp");
: :
: :
: : void __fastcall TDeviceForm::CppWebBrowser1DocumentComplete(
: : TObject *Sender, LPDISPATCH pDisp, Variant *URL)
: : {
: : Edit1->Text = CppWebBrowser1->LocationURL;
: : IDispatch *Document;
: : //err
: : Document = CppWebBrowser1->Document;
: : IHTMLElement *HTMLElement;
: : IHTMLDocument2 *pHTMLDocument;
: : HRESULT hr;
: :
: : WideString HTML;
: : WideString Text;
: : hr = Document->QueryInterface(IID_IHTMLDocument2,(void**)&pHTMLDocument );
: : if ( hr == S_OK )
: : {
: : hr = pHTMLDocument->get_body(&HTMLElement);
: : if ( hr == S_OK )
: : {
: : HTMLElement->get_innerHTML(&HTML);
: : HTMLElement->get_innerText(&Text);
: : HTMLElement->Release();
: : }
: : pHTMLDocument->Release();
: : }
: : Memo1->Lines->Clear();
: : Memo1->Lines->Add(HTML);
: : }
|