C ++ WebBrowser阻止URL

时间:2018-09-17 17:07:58

标签: c++ c++builder twebbrowser

如何在C ++ Builder中阻止TWebBrowser中的任何URL?

我尝试了这段代码,但是没有按我预期的方式工作。

void __fastcall TForm1::WebBrowser1BeforeNavigate2(TObject *ASender, const IDispatch *pDisp,
          const OleVariant &URL, const OleVariant &Flags, const OleVariant &TargetFrameName,
          const OleVariant &PostData, const OleVariant &Headers,
          WordBool &Cancel)
{
    if (URL.operator UnicodeString() == запрещенный_адрес)
        WebBrowser1->Stop();
}

1 个答案:

答案 0 :(得分:0)

запрещенный_адрес不是URL。您必须根据需要检查完整 URL,包括http:https:前缀。

此外,仅调用Stop()是不够的,还需要将事件处理程序的Cancel参数设置为true。

void __fastcall TForm1::WebBrowser1BeforeNavigate2(TObject *ASender, const IDispatch *pDisp,
    const OleVariant &URL, const OleVariant &Flags, const OleVariant &TargetFrameName,
    const OleVariant &PostData, const OleVariant &Headers,
    WordBool &Cancel)
{
    System::String sUrl = URL;
    if (sUrl == _D("http://the full url here"))
    {
        Cancel = VARIANT_TRUE;
        WebBrowser1->Stop();
    }
}