Использование ICoreWebView2EnvironmentOptions в C++Builder 11
Я пытаюсь отключить CORS в TEdgeBrowser и нашел множество решений, используя
ICoreWebView2EnvironmentOptions
потому что TEdgeBrowser реализуется WebView2.
В документе Microsoft пример кода, по-видимому, используемый для 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->put_AdditionalBrowserArguments()
.
Я понятия не имею, и, возможно, я ошибся. Кто-нибудь может мне помочь?
1 ответ
_di_ICoreWebView2EnvironmentOptions
является typedef для проведение
ICoreWebView2EnvironmentOptions*
указатель. Вы не используете на
DelphiInterface
сам, ты
new
класс, который реализует интерфейс, например:
class TCoreWebView2EnvironmentOptionsImpl : public ICoreWebView2EnvironmentOptions
{
// implement IUnknown and ICoreWebView2EnvironmentOptions as needed...
};
_di_ICoreWebView2EnvironmentOptions m_WV2_EnvOpt = new TCoreWebView2EnvironmentOptionsImpl;
Однако объекты WRL не используются таким образом.
В этом случае библиотека WebView2 отображается как COM-объект, поэтому вы можете использовать CoCreateInstance()
создать его экземпляр (
CLSID
для библиотеки WebView2 есть
26D34152-879F-4065-BEA2-3DAA2CFADFB8
, и
IID
ибо есть
2FDE08A8-1E9A-4766-8C05-95A9CEB9D1C5
), например:
_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, но, насколько мне известно, этот метод не поддерживает
--disable-web-security
вариант .