0
点赞
收藏
分享

微信扫一扫

C# com 加载项 点按钮 加载网页

  1. 在 C# 代码中实现loginCDS回调方法,对应按钮的onAction属性
  2. 创建一个独立的方法处理 URL 跳转逻辑
  3. 支持内部浏览器打开或外部浏览器打开两种方式

完整代码

using System;
using System.Diagnostics;
using System.Windows.Forms;
using WPSIRibbon = Kingsoft.Office.WPSIRibbon;

namespace YourAddInNamespace
{
    public partial class ThisAddIn
    {
        // 存储内部浏览器引用(如果需要在WPS内部打开)
        private WebBrowser internalBrowser;

        private void ThisAddIn_Startup(object sender, EventArgs e)
        {
            // 初始化内部浏览器控件(如果需要在WPS内部打开)
            internalBrowser = new WebBrowser();
        }

        // 按钮点击回调方法(对应XML中的onAction="loginCDS")
        public void loginCDS(WPSIRibbon.IRibbonControl control)
        {
            // 调用独立的跳转方法
            NavigateToUrl("http://192.168.0.193/user/login");
        }

        // 图像获取回调方法(对应XML中的getImage="GetRibbonImage")
        public object GetRibbonImage(WPSIRibbon.IRibbonControl control)
        {
            // 返回按钮图标(这里可以根据control.Id返回不同图标)
            return Properties.Resources.LoginIcon; // 需要在项目中添加图标资源
        }

        // 独立的URL跳转方法
        private void NavigateToUrl(string url)
        {
            try
            {
                if (ShouldUseInternalBrowser())
                {
                    // 方法1:使用WPS内部浏览器打开(需要确保internalBrowser已正确初始化)
                    internalBrowser.Navigate(url);
                    
                    // 显示内部浏览器(示例:添加到某个已存在的Panel控件)
                    if (internalBrowser.Parent == null && panelMain != null)
                    {
                        panelMain.Controls.Add(internalBrowser);
                        internalBrowser.Dock = DockStyle.Fill;
                    }
                }
                else
                {
                    // 方法2:使用系统默认浏览器打开
                    Process.Start(new ProcessStartInfo(url) { UseShellExecute = true });
                }
            }
            catch (Exception ex)
            {
                MessageBox.Show($"导航到 {url} 时出错: {ex.Message}", "错误", 
                    MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
        }

        // 判断是否使用内部浏览器的方法(可根据需求自定义)
        private bool ShouldUseInternalBrowser()
        {
            // 示例:根据配置或条件决定使用哪种方式
            return Properties.Settings.Default.UseInternalBrowser;
        }
    }
}


使用说明

  1. 将上述代码添加到你的 WPS 加载项项目中
  2. 确保项目中已正确引用 WPS 的 COM 组件(通常是Kingsoft.Office.Interop.WPS
  3. 如果需要使用内部浏览器,需要在设计界面中添加一个 Panel 控件(命名为panelMain
  4. 如果需要自定义按钮图标,在项目资源中添加LoginIcon图像资源

注意事项

  • 内部浏览器方式需要在 WPS 界面中预留显示位置(如 Panel 控件)
  • 外部浏览器方式兼容性更好,但会离开 WPS 环境
  • 对于内网地址http://192.168.0.193,确保 WPS 所在机器可以访问该地址
  • 可以通过修改ShouldUseInternalBrowser()方法来自定义打开方式的选择逻辑
举报

相关推荐

0 条评论