Jak pobrać źródło strony z komponentu CppWebBrowsers

problemy z tworzeniem programów do obsługi sieci, internetu, e-mail itp..

Jak pobrać źródło strony z komponentu CppWebBrowsers

Nowy postprzez kurczez » środa, 12 maja 2010, 14:48

Tak jak w temacie, dziękuje za odpowiedzi.
Avatar użytkownika
kurczez
Homos antropiczny
Homos antropiczny
 
Posty: 56
Dołączył(a): sobota, 10 października 2009, 18:58
Podziękował : 4
Otrzymał podziękowań: 0
System operacyjny: Vista
Kompilator: Turbo C++
Gadu Gadu: 0
    Windows VistaFirefox

Re: Jak pobrać źródło strony z komponentu CppWebBrowsers

Nowy postprzez Cyfrowy Baron » środa, 12 maja 2010, 17:43

A możesz precyzyjniej...

Co rozumiesz przez źródło strony?!



Szukałeś odpowiedzi na tym forum?

viewtopic.php?f=16&t=527&start=0&hilit=%C5%9Bci%C4%85ganie
viewtopic.php?f=16&t=445&start=0&hilit=%C5%9Bci%C4%85ganie
Avatar użytkownika
Cyfrowy Baron
Administrator
Administrator
 
Posty: 4719
Dołączył(a): niedziela, 13 lipca 2008, 15:17
Podziękował : 12
Otrzymał podziękowań: 442
System operacyjny: Windows 7 x64 SP1
Kompilator: Embarcadero RAD Studio XE2
C++ Builder XE2 Update 4
SKYPE: cyfbar
Gadu Gadu: 0
    Windows XPFirefox

Re: Jak pobrać źródło strony z komponentu CppWebBrowsers

Nowy postprzez Cyfrowy Baron » środa, 12 maja 2010, 19:12

Trochę mi to zajęło, ale już wiem o co prawdopodobnie pytasz. Chcesz zapisać stronę wyświetlaną w kontrolce typu TWebBrowser do pliku.

Proponuję kod z wywołaniem komendy Zapisz jako:

Kod dla C++Builder od 2007 do 2010.

Kod: Zaznacz cały

  OleVariant t
;
 WebBrowser1->ExecWB(Shdocvw_tlb::OLECMDID::OLECMDID_SAVEAS,
            Shdocvw_tlb::OLECMDEXECOPT::OLECMDEXECOPT_DODEFAULT,
            NULL, t);
 


Powyższy kod spowoduje wywołanie okna dialogowego w którym będziesz mógł wybrać lokalizację strony, oraz sposób w jaki ma być zapisana. Do wyboru jest kompletna strona sieci Web, czyli z wszystkimi towarzyszącymi jej plikami, dostępne jest archiwum sieci web, czyli pojedynczy plik mht, pojedyncza strona sieci web, czyli bez towarzyszących jej plików, oraz plik tekstowe jak wcześniej.
Avatar użytkownika
Cyfrowy Baron
Administrator
Administrator
 
Posty: 4719
Dołączył(a): niedziela, 13 lipca 2008, 15:17
Podziękował : 12
Otrzymał podziękowań: 442
System operacyjny: Windows 7 x64 SP1
Kompilator: Embarcadero RAD Studio XE2
C++ Builder XE2 Update 4
SKYPE: cyfbar
Gadu Gadu: 0
    Windows XPFirefox

Re: Jak pobrać źródło strony z komponentu CppWebBrowsers

Nowy postprzez kurczez » czwartek, 13 maja 2010, 11:18

Cyfrowy Baron dzięki za odpowiedź, ale najwidoczniej źle sprecyzowałem pytanie.
Chciałbym źródło strony [kod html] wczytanej do CppWebBrowsers wyświetlić np. w TMemo.

W delphi w WebBrowsers można zrobić to tak:

Kod: Zaznacz cały
Memo1.Text := WebBrowser1.OleObject.Document.documentElement.innerHTML;
Avatar użytkownika
kurczez
Homos antropiczny
Homos antropiczny
 
Posty: 56
Dołączył(a): sobota, 10 października 2009, 18:58
Podziękował : 4
Otrzymał podziękowań: 0
System operacyjny: Vista
Kompilator: Turbo C++
Gadu Gadu: 0
    Windows VistaFirefox

Re: Jak pobrać źródło strony z komponentu CppWebBrowsers

Nowy postprzez Cyfrowy Baron » czwartek, 13 maja 2010, 13:35

To akurat można zrobić na wiele sposobów. Najprostszy to wyświetlenie podglądu strony patrz serwis Cyfrowy Baron dział: porady -> sieć, internet -> Wywołanie okna podglądu dla kontrolki TCppWebBrowser.

Kod: Zaznacz cały

 CppWebBrowser1
->ExecWB(Shdocvw_tlb::OLECMDID::OLECMDID_PRINTPREVIEW,Shdocvw_tlb::OLECMDEXECOPT::OLECMDEXECOPT_DODEFAULT);
 


Ten kod z Delphi nie zadziała w C++ Builder, gdyż kontrolka TWebBrowser w C++ nie ma interfejsu documentElement. Wiem jak zapisać stronę do pliku, ale nad przepisaniem jej zawartości do Memo muszę jeszcze popracować. Póki co mam z tym jeszcze problem, jak go rozwiąże dam odpowiedź.
Avatar użytkownika
Cyfrowy Baron
Administrator
Administrator
 
Posty: 4719
Dołączył(a): niedziela, 13 lipca 2008, 15:17
Podziękował : 12
Otrzymał podziękowań: 442
System operacyjny: Windows 7 x64 SP1
Kompilator: Embarcadero RAD Studio XE2
C++ Builder XE2 Update 4
SKYPE: cyfbar
Gadu Gadu: 0
    Windows XPFirefox

Re: Jak pobrać źródło strony z komponentu CppWebBrowsers

Nowy postprzez kurczez » czwartek, 13 maja 2010, 14:28

U mnie podczas kompilacji Twojego kodu wyświetlają się 2 błędy:

[C++ Error] Unit4.cpp(71): E2090 Qualifier 'OLECMDID' is not a class or namespace name
[C++ Error] Unit4.cpp(71): E2121 Function call missing )


Ale i tak muszę to wyciągnąć do TMemo, samo zobaczenie kodu mi nic nie daje.
Kiedyś to jakoś zrobiłem, ale nie mogę sobie przypomnieć a google mało o tym mówi :/
Avatar użytkownika
kurczez
Homos antropiczny
Homos antropiczny
 
Posty: 56
Dołączył(a): sobota, 10 października 2009, 18:58
Podziękował : 4
Otrzymał podziękowań: 0
System operacyjny: Vista
Kompilator: Turbo C++
Gadu Gadu: 0
    Windows VistaFirefox

Re: Jak pobrać źródło strony z komponentu CppWebBrowsers

Nowy postprzez Cyfrowy Baron » piątek, 14 maja 2010, 06:55

Używasz Turbo C++ dlatego u Ciebie może być trochę inaczej. Spróbuj tak:

Kod: Zaznacz cały

 CppWebBrowser1
->ExecWB(Shdocvw_tlb::OLECMDID_PRINTPREVIEW,Shdocvw_tlb::OLECMDEXECOPT_DODEFAULT);
 


lub tak:

Kod: Zaznacz cały

 CppWebBrowser1
->ExecWB(Shdocvw::OLECMDID_PRINTPREVIEW,Shdocvw::OLECMDEXECOPT_DODEFAULT);
 


Co do Memo to jest na to trochę inny sposób nie oparty na kontrolce TWebBrowser, opisałem to w serwisie Cyfrowy Baron w dziale: porady -> sieć, internet

Wyciąganie adresów URL ze stron internetowych - wystarczy pominąć kod odpowiedzialny za wyciąganie adresów URL i masz cała stronę w zmiennej typu String.
Wyświetlanie plików graficznych bezpośrednio z Internetu - na końcu porady jest podany sposób wczytywania strony do Memo.



Co się tyczy wczytywania strony do obiektu typu TMemo bezpośrednio z kontrolki typu TWebBrowser lub TCppWebBrowser, to już sobie z tym poradziłem. Wcześniej popełniałem drobny, acz brzemienny w skutkach błąd:

Kod: Zaznacz cały

 TMemoryStream 
*stm = new TMemoryStream();

 IPersistStreamInit *psi;

 TStreamAdapter *sa = new TStreamAdapter(stm, soReference);

 if(SUCCEEDED(WebBrowser1->Document->QueryInterface(IID_IPersistStreamInit,
              (void **)&psi)))
 {
  psi->Save(*sa, false);
  stm->Position = 0;

  Memo1->Lines->LoadFromStream(stm);
 }
 delete stm;
 

Za ten post autor Cyfrowy Baron otrzymał podziękowanie od:
kurczez
Avatar użytkownika
Cyfrowy Baron
Administrator
Administrator
 
Posty: 4719
Dołączył(a): niedziela, 13 lipca 2008, 15:17
Podziękował : 12
Otrzymał podziękowań: 442
System operacyjny: Windows 7 x64 SP1
Kompilator: Embarcadero RAD Studio XE2
C++ Builder XE2 Update 4
SKYPE: cyfbar
Gadu Gadu: 0
    Windows XPFirefox


  • Podobne tematy
    Odpowiedzi
    Wyświetlone
    Ostatni post

Powrót do Aplikacje sieciowe

Kto przegląda forum

Użytkownicy przeglądający ten dział: Brak zalogowanych użytkowników i 3 gości

cron