c ++ WebBrowser块网址

问题描述 投票:0回答:1

如何在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();
}
c++ c++builder twebbrowser
1个回答
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();
    }
}
© www.soinside.com 2019 - 2024. All rights reserved.