CYFROWY BARON • PROGRAMOWANIE • Zobacz wątek - WebBrowser1 problem z oknem od błędów JS

WebBrowser1 problem z oknem od błędów JS

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

WebBrowser1 problem z oknem od błędów JS

Nowy postprzez Darek_C++ » wtorek, 7 grudnia 2010, 21:36

Witam ponownie,
niektóre strony wczytane do WebBrowser1 zresztą do IE powodują wyskakiwanie onka komunikatu błędu np:

Obrazek

Czy jest jakiś Wam znany sposób by wyskakiwanie tego okna wyłączyć z poziomu programu ?

Niestety klikniecie w Nie nie powoduje, że okno przestaje się pojawiać :(
Avatar użytkownika
Darek_C++
Elektrowied
Elektrowied
 
Posty: 454
Dołączył(a): piątek, 25 lipca 2008, 14:33
Podziękował : 66
Otrzymał podziękowań: 4
System operacyjny: Windows XP Pro SP2
Kompilator: Turbo Explorer C++
Gadu Gadu: 0
    Windows XPFirefox

Re: WebBrowser1 problem z oknem od błędów JS

Nowy postprzez Cyfrowy Baron » wtorek, 7 grudnia 2010, 22:10

Kontrolka WebBrowser nie obsługuje błędów skryptów. Swego czasu szukałem jakichś informacji na temat obsługi tych błędów, ale niestety nic nigdzie o tym nie ma.
Avatar użytkownika
Cyfrowy Baron
Administrator
Administrator
 
Posty: 4716
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: WebBrowser1 problem z oknem od błędów JS

Nowy postprzez Cyfrowy Baron » środa, 8 grudnia 2010, 11:45

W poprzednim poście wyraziłem się nieprecyzyjnie. Można przechwycić komunikat o błędzie skryptu, ale niewiele można z tym zrobić. Z problemem zetknąłem się przy tworzeniu programu Babilon. obszedłem go jednak w dość nietypowy sposób. Po pojawieniu się błędu skryptu program po prostu przywołuje okno właściwości ładowanej strony, co pozwala stronie na dalsze ładowanie, o ile skrypt tego nie zablokuje.

By okno błędów skryptów nie pojawiało się trzeba ustawić właściwość Silent kontrolki na true;

Kod: Zaznacz cały
WebBrowser1->Silent = true;
WebBrowser1->Navigate(L "about:blank");


W celu przechwycenia komunikatu o błędzie skryptu trzeba umieścić na formularzu komponent TApplicationEvents i utworzyć zdarzenie OnException. W zdarzeniu umieszczamy taki kod:

KOD cpp:     UKRYJ  
void __fastcall TEdytorMainForm::ApplicationEvents1Exception(TObject *Sender,
      Exception *E)
{
   if(E->Message == "Invalid floating point operation")
   {
    Timer1->Enabled = true;

    WebBrowser1->ExecWB(Shdocvw_tlb::OLECMDID::OLECMDID_PROPERTIES,
                         Shdocvw_tlb::OLECMDEXECOPT::OLECMDEXECOPT_DODEFAULT);

    Application->ProcessMessages();
   }
}


Potrzebny jest jeszcze komponent Timer1 z właściwością Interval = 25. W zdarzeniu OnTimer tego zegara program będzie przechwytywał okno właściwości strony i zamykał je:

KOD cpp:     UKRYJ  
void __fastcall TEdytorMainForm::WBTimerTimer(TObject *Sender)
{
 HWND hWnd = FindWindow(NULL, L"Właściwości");

 if(hWnd)
 {
  <span class="posthilit">SendMessage</span>(hWnd, WM_CLOSE, 0, 0);
  Timer1->Enabled = false;
 }
}
Zdaję sobie sprawę, że to kiepskie rozwiązanie, ale to najlepsze co na razie udało mi się wymyślić.

Za ten post autor Cyfrowy Baron otrzymał podziękowanie od:
Darek_C++
Avatar użytkownika
Cyfrowy Baron
Administrator
Administrator
 
Posty: 4716
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 1 gość

cron