首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ICoreWebView2EnvironmentOptions在C++Builder 11中的使用

ICoreWebView2EnvironmentOptions在C++Builder 11中的使用
EN

Stack Overflow用户
提问于 2022-01-19 09:21:18
回答 1查看 390关注 0票数 0

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

微软的文件中,示例代码似乎用于VisualC++,C++ Builder不适用于:

代码语言:javascript
复制
auto options = Microsoft::WRL::Make<CoreWebView2ExperimentalEnvironmentOptions>();

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

代码语言:javascript
复制
_di_ICoreWebView2EnvironmentOptions *m_WV2_EnvOpt = new _di_ICoreWebView2EnvironmentOptions();
m_WV2EnvOpt->put_AdditionalBrowserArguments(L"--disable-web-security");

它将在m_WV2EnvOpt->put_AdditionalBrowserArguments()中失败。

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

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-01-19 19:48:46

_di_ICoreWebView2EnvironmentOptionsDelphiInterface保存ICoreWebView2EnvironmentOptions*指针的类型类型。您不对new本身使用DelphiInterface,而是对实现接口的类进行new,例如:

代码语言:javascript
复制
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-3DAA2CFADFB8ICoreWebView2EnvironmentOptionsIID2FDE08A8-1E9A-4766-8C05-95A9CEB9D1C5),例如:

代码语言:javascript
复制
_di_ICoreWebView2EnvironmentOptions m_WV2_EnvOpt;
CoCreateInstance(LIBID_WebView2, NULL, CLSCTX_INPROC_SERVER, IID_ICoreWebView2EnvironmentOptions, (LPVOID*)&m_WV2_EnvOpt);

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

您可以尝试在创建WEBVIEW2_ADDITIONAL_BROWSER_ARGUMENTS对象之前设置WebView2环境变量,但是要设置AFAIK 选项

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70768030

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档