Использование 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вариант .

Другие вопросы по тегам