- 在 C# 代码中实现
loginCDS
回调方法,对应按钮的onAction
属性 - 创建一个独立的方法处理 URL 跳转逻辑
- 支持内部浏览器打开或外部浏览器打开两种方式
完整代码
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;
}
}
}
使用说明
- 将上述代码添加到你的 WPS 加载项项目中
- 确保项目中已正确引用 WPS 的 COM 组件(通常是
Kingsoft.Office.Interop.WPS
) - 如果需要使用内部浏览器,需要在设计界面中添加一个 Panel 控件(命名为
panelMain
) - 如果需要自定义按钮图标,在项目资源中添加
LoginIcon
图像资源
注意事项
- 内部浏览器方式需要在 WPS 界面中预留显示位置(如 Panel 控件)
- 外部浏览器方式兼容性更好,但会离开 WPS 环境
- 对于内网地址
http://192.168.0.193
,确保 WPS 所在机器可以访问该地址 - 可以通过修改
ShouldUseInternalBrowser()
方法来自定义打开方式的选择逻辑