From f76cfe648fe368e81421e939c5cbe8933cb02c08 Mon Sep 17 00:00:00 2001 From: CJKmkp <2564608840@qq.com> Date: Sun, 18 Jan 2026 08:35:45 +0800 Subject: [PATCH] =?UTF-8?q?improve:PPT=E8=81=94=E5=8A=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Ink Canvas/Helpers/PPTManager.cs | 62 +++++++++++++++++++- Ink Canvas/Helpers/PPTROTConnectionHelper.cs | 22 +++---- 2 files changed, 70 insertions(+), 14 deletions(-) diff --git a/Ink Canvas/Helpers/PPTManager.cs b/Ink Canvas/Helpers/PPTManager.cs index b3c42d22..95ab8d26 100644 --- a/Ink Canvas/Helpers/PPTManager.cs +++ b/Ink Canvas/Helpers/PPTManager.cs @@ -543,8 +543,36 @@ namespace Ink_Canvas.Helpers } else { - _lastPolledSlideNumber = -1; - SlidesCount = 0; + if (_lastSlideShowState) + { + LogHelper.WriteLogToFile("轮询检测到放映已结束", LogHelper.LogType.Trace); + + PPTROTConnectionHelper.SafeReleaseComObject(_pptSlideShowWindow); + _pptSlideShowWindow = null; + _lastPolledSlideNumber = -1; + _polling = 1; + SlidesCount = 0; + + _lastSlideShowState = false; + SlideShowStateChanged?.Invoke(false); + + if (_pptActivePresentation != null) + { + try + { + OnSlideShowEnd(_pptActivePresentation); + } + catch (Exception ex) + { + LogHelper.WriteLogToFile($"触发SlideShowEnd事件失败: {ex.Message}", LogHelper.LogType.Warning); + } + } + } + else + { + _lastPolledSlideNumber = -1; + SlidesCount = 0; + } } } else @@ -878,7 +906,35 @@ namespace Ink_Canvas.Helpers } else { - SlidesCount = 0; + if (_lastSlideShowState) + { + LogHelper.WriteLogToFile("轮询检测到放映已结束", LogHelper.LogType.Trace); + + PPTROTConnectionHelper.SafeReleaseComObject(_pptSlideShowWindow); + _pptSlideShowWindow = null; + _lastPolledSlideNumber = -1; + _polling = 1; + SlidesCount = 0; + + _lastSlideShowState = false; + SlideShowStateChanged?.Invoke(false); + + if (_pptActivePresentation != null) + { + try + { + OnSlideShowEnd(_pptActivePresentation); + } + catch (Exception ex) + { + LogHelper.WriteLogToFile($"触发SlideShowEnd事件失败: {ex.Message}", LogHelper.LogType.Warning); + } + } + } + else + { + SlidesCount = 0; + } } } catch (Exception ex) diff --git a/Ink Canvas/Helpers/PPTROTConnectionHelper.cs b/Ink Canvas/Helpers/PPTROTConnectionHelper.cs index e223a256..cd067f5d 100644 --- a/Ink Canvas/Helpers/PPTROTConnectionHelper.cs +++ b/Ink Canvas/Helpers/PPTROTConnectionHelper.cs @@ -394,21 +394,21 @@ namespace Ink_Canvas.Helpers if (fgPid == sswPid) return true; - try - { - using (Process fgProc = Process.GetProcessById((int)fgPid)) - using (Process appProc = Process.GetProcessById((int)sswPid)) + try { - string fgName = fgProc.ProcessName.ToLower(); - string appName = appProc.ProcessName.ToLower(); - - if (fgName.StartsWith("wps") && appName.StartsWith("wpp")) + using (Process fgProc = Process.GetProcessById((int)fgPid)) + using (Process appProc = Process.GetProcessById((int)sswPid)) { - return true; + string fgName = fgProc.ProcessName.ToLower(); + string appName = appProc.ProcessName.ToLower(); + + if (fgName.StartsWith("wps") && appName.StartsWith("wpp")) + { + return true; + } } } - } - catch { } + catch { } return false; }