【问题标题】:Usage ICoreWebView2EnvironmentOptions in C++Builder 11在 C++Builder 11 中使用 ICoreWebView2EnvironmentOptions
【发布时间】:2022-01-19 09:21:18
【问题描述】:

我正在尝试在 TEdgeBrowser 中禁用 CORS,并通过使用 ICoreWebView2EnvironmentOptions 找到了很多解决方案,因为 TEdgeBrowser 是由 WebView2 实现的。

Microsoft's document 中的示例代码似乎用于 Visual C++ 和 C++ Builder 不适用:

auto options = Microsoft::WRL::Make<CoreWebView2ExperimentalEnvironmentOptions>();

这是我在 C++ Builder 11 中尝试过的代码:

_di_ICoreWebView2EnvironmentOptions *m_WV2_EnvOpt = new _di_ICoreWebView2EnvironmentOptions();
m_WV2EnvOpt->put_AdditionalBrowserArguments(L"--disable-web-security");

它会在m_WV2EnvOpt-&gt;put_AdditionalBrowserArguments() 中失败。

我不知道,也许我走错了路。有人可以帮我吗?

【问题讨论】:

    标签: c++builder webview2 tedgebrowser


    【解决方案1】:

    _di_ICoreWebView2EnvironmentOptionsDelphiInterface 的 typedef,它持有一个 ICoreWebView2EnvironmentOptions* 指针。你不要在DelphiInterface本身上使用new,你new是一个实现接口的类,例如:

    class TCoreWebView2EnvironmentOptionsImpl : public ICoreWebView2EnvironmentOptions
    {
        // implement IUnknown and ICoreWebView2EnvironmentOptions as needed...
    };
    
    _di_ICoreWebView2EnvironmentOptions m_WV2_EnvOpt = new TCoreWebView2EnvironmentOptionsImpl;
    

    但是,WRL 对象不以这种方式使用。

    在这种情况下,WebView2 库将 ICoreWebView2EnvironmentOptions 公开为 COM 对象,因此您可以使用 CoCreateInstance() 对其进行实例化(WebView2 库的 CLSID26D34152-879F-4065-BEA2-3DAA2CFADFB8IID 为 @ 987654337@是2FDE08A8-1E9A-4766-8C05-95A9CEB9D1C5),例如:

    _di_ICoreWebView2EnvironmentOptions m_WV2_EnvOpt;
    CoCreateInstance(LIBID_WebView2, NULL, CLSCTX_INPROC_SERVER, IID_ICoreWebView2EnvironmentOptions, (LPVOID*)&m_WV2_EnvOpt);
    

    但是,在这种情况下,这对您没有帮助,因为您必须在创建 WebView2 对象时提供创建的 ICoreWebView2EnvironmentOptions 对象,而 AFAIK TEdgeBrowser 根本不允许您这样做。

    您可以尝试在创建 WebView2 对象之前设置 WEBVIEW2_ADDITIONAL_BROWSER_ARGUMENTS 环境变量,但 AFAIK this method does not support the --disable-web-security option

    【讨论】:

    • 如何使用WEBVIEW2_ADDITIONAL_BROWSER_ARGUMENTS?我找不到任何可以在 TEdgeBrowser 中设置的属性或方法。
    • @willylu 我说的是“环境变量”,所以用SetEnvironmentVariable()
    猜你喜欢
    • 2022-01-23
    • 2016-11-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-09-09
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多