weixin_45840746 2023-12-26 16:31 采纳率: 35.6%
浏览 8
已结题

vsto:powerpoint的外接程序中使用webview2

在powerpoint的外接程序中使用webview2,我希望实现在任务窗口上打开网页,但是我初始化完成后任务窗口总是空白,请教一下,我该怎么解决哎

using System;
using Microsoft.Web.WebView2.WinForms;
using System.Windows.Forms;
using System.Threading.Tasks;
using Microsoft.Web.WebView2.Core;
using System.IO;
using System.Diagnostics;

namespace PowerPointAddIn2
{
    public partial class ThisAddIn
    {
        private WebView2 webView;
        private async void ThisAddIn_Startup(object sender, EventArgs e)
        {
            await InitializeWebView();
        }

        private async Task InitializeWebView()
        {
            try
            {
                var userDataFolder = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData), "YourAppDataFolder");
                var environment = await CoreWebView2Environment.CreateAsync(null, userDataFolder);
                webView = new WebView2();
                webView.CoreWebView2InitializationCompleted += WebViewInitializationCompleted;
                var taskPane = this.CustomTaskPanes.Add(new UserControl { Controls = { webView } }, "WebView Task Pane");
                taskPane.Visible = true;
                await webView.EnsureCoreWebView2Async(environment);

                Debug.WriteLine("Initialization completed on UI thread.");
            }
            catch (Exception ex)
            {
                MessageBox.Show($"Error: {ex.Message}");
            }
        }

        private async void WebViewInitializationCompleted(object sender, CoreWebView2InitializationCompletedEventArgs e)
        {
            if (e.IsSuccess)
            {
                Debug.WriteLine("WebView2 initialization succeeded");
                await Task.Delay(5000);
                webView.Source = new Uri("https://www.baidu.com");
            }
            else Debug.WriteLine($"WebView2 initialization failed: {e.InitializationException}");
        }

        private void ThisAddIn_Shutdown(object sender, System.EventArgs e)
        {
        }

        #region VSTO 生成的代码

        /// <summary>
        /// 设计器支持所需的方法 - 不要修改
        /// 使用代码编辑器修改此方法的内容。
        /// </summary>
        private void InternalStartup()
        {
            this.Startup += new System.EventHandler(ThisAddIn_Startup);
            this.Shutdown += new System.EventHandler(ThisAddIn_Shutdown);
        }

        #endregion
    }

}

  • 写回答

11条回答 默认 最新

  • 专家-赤兔[在线] 全栈领域优质创作者 2023-12-26 16:32
    关注

    引自微信小程序:皆我百晓生

    解决WebView2初始化完成后任务窗口为空白的问题

    1. 确保WebView2控件的引用已正确添加到项目中。
    2. 在项目的app.config文件中加入以下配置节:
    <runtime>   
      <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">   
        <dependentAssembly>   
          <assemblyIdentity name="Microsoft.Web.WebView2.Core" publicKeyToken="0000000000000000" culture="neutral" />   
          <bindingRedirect oldVersion="0.0.0.0-99.99.99.99" newVersion="1.0.1018.103" />   
        </dependentAssembly>   
    </assemblyBinding>
    </runtime>
    
    1. 确保将Microsoft.Web.WebView2.WinFormsMicrosoft.Web.WebView2.Core两个命名空间引入到代码中。
    2. 确保将WebView2控件添加到任务窗格之前,正确设置userDataFolder变量,以便在运行时使用存在的文件夹路径。例如:
    var userDataFolder = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData), "YourAppDataFolder");
    
    1. 确保在WebViewInitializationCompleted事件处理程序内设置webView.Source为所需的网页URL。例如:
    private async void WebViewInitializationCompleted(object sender, CoreWebView2InitializationCompletedEventArgs e)
    {
        if (e.IsSuccess)
        {
            Debug.WriteLine("WebView2 initialization succeeded");
            await Task.Delay(5000);
            webView.Source = new Uri("https://www.baidu.com");
        }
        else 
        {
            Debug.WriteLine($"WebView2 initialization failed: {e.InitializationException}");
        }
    }
    

    请注意,你需要根据你的具体应用程序需求来调整路径、任务窗格标题和URL地址。

    希望以上解决方案能够帮助你解决问题,如有其他疑问,请随时提问。

    评论

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 12月27日
  • 创建了问题 12月26日

悬赏问题

  • ¥30 模拟电路 logisim
  • ¥15 PVE8.2.7无法成功使用a5000的vGPU,什么原因
  • ¥15 is not in the mmseg::model registry。报错,模型注册表找不到自定义模块。
  • ¥15 安装quartus II18.1时弹出此error,怎么解决?
  • ¥15 keil官网下载psn序列号在哪
  • ¥15 想用adb命令做一个通话软件,播放录音
  • ¥30 Pytorch深度学习服务器跑不通问题解决?
  • ¥15 部分客户订单定位有误的问题
  • ¥15 如何在maya程序中利用python编写领子和褶裥的模型的方法
  • ¥15 Bug traq 数据包 大概什么价