c++ - 如何使用 WebView2 运行时的替代版本?
问题描述
这似乎是一个非常愚蠢(基本)的问题。
我正在编写一个使用新 WebView2 控件的 C++ 图形 (Windows) 应用程序。微软提供的样本非常好。但是我遇到了样本中未显示的问题。但是经过两天的谷歌搜索和其他方式的搜索,我找不到答案。我希望这个社区可以提供帮助。
我正在尝试调用 WebView2_4 方法 add_DownloadStarting(),但尝试从 WebView2 窗口获取 WebView2_4 指针不断给我一个 E_NOINTERFACE。
特别是,我有以下代码:
wil::com_ptr<ICoreWebView2> wvWnd = nullptr;
if (controller != nullptr) {
pWebView2->m_webviewController = controller;
pWebView2->m_webviewController->get_CoreWebView2(&wvWnd);
}
wil::com_ptr<ICoreWebView2_4> wvWnd4 = wvWnd.try_query<ICoreWebView2_4>();
最后一行导致 wvWnd4 的 m_ptr 为 NULL。进入最后一行会调用 QueryInterface(),它返回 hr 值 E_NOINTERFACE。
请注意,像
wil::com_ptr<ICoreWebView2_3> wvWnd3 = wvWnd.try_query<ICoreWebView2_3>();
wvWnd3 的结果具有有效的 m_ptr(非 NULL)。
我怀疑这是因为我使用的是当前的 WebView2 运行时(版本 1.0.864.35),而我需要使用更高版本(1.0.902-prerelease)。我已经下载并安装(使用 nuget)预发布版本,但我不知道如何实际加载它。在 Visual Studio 2017 调试器中运行我的应用程序时的输出窗口显示:
'myapp.exe' (Win32): Loaded 'D:\src\c\myapp\Debug\Win32\bin\WebView2Loader.dll'.
'myapp.exe' (Win32): Loaded 'C:\Program Files (x86)\Microsoft\EdgeWebView\Application\91.0.864.59\EBWebView\x86\EmbeddedBrowserWebView.dll'.
这是旧版本。
或者也许还有其他问题?我开始感到沮丧,任何帮助将不胜感激。
解决方案
推荐阅读
- php - 将 2 个数组表加在一起
- java - 打印给定元素数组的所有可能组合
- javascript - Javascript 加载 FBX 6100 和 FBX SDK 2011(3D 文件)
- vba - 通过行循环宏
- node.js - 从 Tweet 对象发送图片数据会导致模板中的图像损坏
- google-cloud-datastore - 如何使用多个工作人员加快批量导入谷歌云数据存储的速度?
- java - 如何读取 brotli 压缩字符串?
- android-studio - android studio,修复安卓缓存问题
- html - Material Design - 列表组件的二级滚动条
- git - Git Bash缺少分支名称和$行