This commit is contained in:
CJK_mkp
2025-06-11 21:27:31 +08:00
parent 8d611a22a2
commit d8fd231476
+10 -37
View File
@@ -29,16 +29,6 @@ namespace Ink_Canvas {
private void BtnCheckPPT_Click(object sender, RoutedEventArgs e) { private void BtnCheckPPT_Click(object sender, RoutedEventArgs e) {
try { try {
pptApplication = null;
// 优先检测WPSwpp.Application),获取不到再尝试PowerPoint
try {
pptApplication = (Microsoft.Office.Interop.PowerPoint.Application)Marshal.GetActiveObject("wpp.Application");
} catch { }
if (pptApplication == null) {
try {
pptApplication = (Microsoft.Office.Interop.PowerPoint.Application)Marshal.GetActiveObject("PowerPoint.Application");
} catch { }
}
if (pptApplication != null) { if (pptApplication != null) {
//获得演示文稿对象 //获得演示文稿对象
presentation = pptApplication.ActivePresentation; presentation = pptApplication.ActivePresentation;
@@ -138,8 +128,8 @@ namespace Ink_Canvas {
pptApplication = null; pptApplication = null;
} }
// 如果没有找到运行中的实例,则创建新实例 // 如果没有找到运行中的实例,则自动创建PowerPoint进程(仅在未启用WPS支持时)
if (pptApplication == null) if (pptApplication == null && !isWPSSupportOn)
{ {
try try
{ {
@@ -147,22 +137,10 @@ namespace Ink_Canvas {
Marshal.GetTypeFromCLSID(new Guid("91493441-5A91-11CF-8700-00AA0060263B"))); Marshal.GetTypeFromCLSID(new Guid("91493441-5A91-11CF-8700-00AA0060263B")));
} }
catch catch
{
// 如果WPS支持开启,尝试创建WPS实例
if (isWPSSupportOn)
{
try
{
pptApplication = (Microsoft.Office.Interop.PowerPoint.Application)Activator.CreateInstance(
Type.GetTypeFromProgID("wpp.Application"));
}
catch
{ {
pptApplication = null; pptApplication = null;
} }
} }
}
}
isPowerPointInitialized = true; isPowerPointInitialized = true;
return; return;
} }
@@ -191,30 +169,25 @@ namespace Ink_Canvas {
} }
slide = null; slide = null;
isPowerPointInitialized = false; isPowerPointInitialized = false;
// 这里可以选择自动重启 PowerPoint 或 WPS 或等待用户操作
// PowerPoint进程守护:自动重启PowerPoint进程(仅在未启用WPS支持时)
if (!isWPSSupportOn)
{
try try
{
if (isWpsMode)
{
// 自动重启WPS
Process.Start("wpp.exe");
Thread.Sleep(2000); // 等待WPS启动
pptApplication = (Microsoft.Office.Interop.PowerPoint.Application)Activator.CreateInstance(
Type.GetTypeFromProgID("wpp.Application"));
}
else
{ {
pptApplication = (Microsoft.Office.Interop.PowerPoint.Application)Activator.CreateInstance( pptApplication = (Microsoft.Office.Interop.PowerPoint.Application)Activator.CreateInstance(
Marshal.GetTypeFromCLSID(new Guid("91493441-5A91-11CF-8700-00AA0060263B"))); Marshal.GetTypeFromCLSID(new Guid("91493441-5A91-11CF-8700-00AA0060263B")));
}
isPowerPointInitialized = true; isPowerPointInitialized = true;
} }
catch (Exception ex) catch (Exception ex)
{ {
LogHelper.WriteLogToFile("PowerPoint/WPS 守护重启失败: " + ex.ToString(), LogHelper.LogType.Error); LogHelper.WriteLogToFile("PowerPoint 守护重启失败: " + ex.ToString(), LogHelper.LogType.Error);
} }
return; return;
} }
// 启用WPS支持时不守护PowerPoint进程
return;
}