From 5cf409ce0b6fa3212b9fa908706fedad4046ff34 Mon Sep 17 00:00:00 2001 From: CJKmkp <2564608840@qq.com> Date: Mon, 21 Jul 2025 16:15:42 +0800 Subject: [PATCH] =?UTF-8?q?improve:PPT=E6=A8=A1=E5=9D=97?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Ink Canvas/MainWindow_cs/MW_PPT.cs | 29 ++++++++++++++++++++++------- 1 file changed, 22 insertions(+), 7 deletions(-) diff --git a/Ink Canvas/MainWindow_cs/MW_PPT.cs b/Ink Canvas/MainWindow_cs/MW_PPT.cs index d75b03c3..40c12618 100644 --- a/Ink Canvas/MainWindow_cs/MW_PPT.cs +++ b/Ink Canvas/MainWindow_cs/MW_PPT.cs @@ -222,16 +222,16 @@ namespace Ink_Canvas { // 0x800401E3: 操作无法使用 // 0x80004005: 未指定错误(常见于PPT已关闭) // 0x800706B5: RPC服务器不可用 - if (hr == 0x800401E3 || hr == 0x80004005 || hr == 0x800706B5) + // 0x80048240: 没有活动的演示文稿 + // 0x800706BE: 远程过程调用失败 + if (hr == 0x800401E3 || hr == 0x80004005 || hr == 0x800706B5 || hr == 0x80048240 || hr == 0x800706BE) { - // 可选:LogHelper.WriteLogToFile($"忽略已知COM异常: {hr:X}", LogHelper.LogType.Trace); Application.Current.Dispatcher.Invoke(() => { BtnPPTSlideShow.Visibility = Visibility.Collapsed; }); timerCheckPPT.Start(); return; } } LogHelper.WriteLogToFile($"检查PPT状态失败: {ex.ToString()}", LogHelper.LogType.Error); - //StackPanelPPTControls.Visibility = Visibility.Collapsed; Application.Current.Dispatcher.Invoke(() => { BtnPPTSlideShow.Visibility = Visibility.Collapsed; }); timerCheckPPT.Start(); } @@ -1410,6 +1410,13 @@ namespace Ink_Canvas { private void StartWppProcessCheckTimer() { + // 新增:WPS联动未启用时不查杀wpp进程 + if (!Settings.PowerPointSettings.IsSupportWPS) + { + LogHelper.WriteLogToFile("WPS联动未启用,跳过WPP进程查杀", LogHelper.LogType.Trace); + return; + } + if (wppProcessCheckTimer != null) { wppProcessCheckTimer.Stop(); @@ -1424,6 +1431,14 @@ namespace Ink_Canvas { private void WppProcessCheckTimer_Elapsed(object sender, System.Timers.ElapsedEventArgs e) { + // 新增:WPS联动未启用时不查杀wpp进程 + if (!Settings.PowerPointSettings.IsSupportWPS) + { + LogHelper.WriteLogToFile("WPS联动未启用,跳过WPP进程查杀", LogHelper.LogType.Trace); + StopWppProcessCheckTimer(); + return; + } + try { if (wppProcess == null || hasWppProcessID == false) @@ -1970,10 +1985,10 @@ namespace Ink_Canvas { { try { - if (process.ProcessName.ToLower().Contains("wps") || - process.ProcessName.ToLower().Contains("powerpnt") || - process.ProcessName.ToLower().Contains("presentation") || - process.ProcessName.ToLower().Contains("wpp")) + var pname = process.ProcessName.ToLower(); + if ((pname.Contains("wps") || pname.Contains("wpp") || pname.Contains("presentation")) + // 排除PowerPoint官方进程 + && !pname.Contains("powerpnt")) { wpsProcesses.Add(process); LogHelper.WriteLogToFile($"发现WPS进程: {process.ProcessName} (PID: {process.Id})", LogHelper.LogType.Trace);