From 6ebe50e71bc9a88601128ac1195c6d877f11a02f Mon Sep 17 00:00:00 2001 From: CJKmkp <2564608840@qq.com> Date: Sun, 18 Jan 2026 01:20:30 +0800 Subject: [PATCH] =?UTF-8?q?impsove: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 | 30 ++++++++++++++++++++++++++++++ 1 file changed, 30 insertions(+) diff --git a/Ink Canvas/Helpers/PPTManager.cs b/Ink Canvas/Helpers/PPTManager.cs index 4cd2d599..c6a62fac 100644 --- a/Ink Canvas/Helpers/PPTManager.cs +++ b/Ink Canvas/Helpers/PPTManager.cs @@ -150,6 +150,7 @@ namespace Ink_Canvas.Helpers private bool _forcePolling = false; private bool _bindingEvents = false; private DateTime _updateTime; + private int _lastPolledSlideNumber = -1; #endregion #region Constructor & Initialization @@ -423,6 +424,19 @@ namespace Ink_Canvas.Helpers SlidesCount = tempTotalPage; if (currentPage >= tempTotalPage) _polling = 1; else _polling = 0; + + if (_forcePolling && currentPage != _lastPolledSlideNumber && _lastPolledSlideNumber != -1) + { + try + { + SlideShowNextSlide?.Invoke(_pptSlideShowWindow); + } + catch (Exception ex) + { + LogHelper.WriteLogToFile($"触发轮询模式幻灯片切换事件失败: {ex.Message}", LogHelper.LogType.Trace); + } + } + _lastPolledSlideNumber = currentPage; } catch (Exception ex) { @@ -450,6 +464,18 @@ namespace Ink_Canvas.Helpers try { int currentPage = GetCurrentSlideIndex(_pptSlideShowWindow); + if (_forcePolling && currentPage != _lastPolledSlideNumber && _lastPolledSlideNumber != -1) + { + try + { + SlideShowNextSlide?.Invoke(_pptSlideShowWindow); + } + catch (Exception ex) + { + LogHelper.WriteLogToFile($"触发轮询模式幻灯片切换事件失败: {ex.Message}", LogHelper.LogType.Trace); + } + } + _lastPolledSlideNumber = currentPage; UpdateCurrentPresentationInfo(); _polling = 2; } @@ -536,12 +562,14 @@ namespace Ink_Canvas.Helpers { _pptActivePresentation = pptAppDynamic.ActivePresentation; _updateTime = DateTime.Now; + _lastPolledSlideNumber = -1; } catch (Exception ex) { LogHelper.WriteLogToFile($"访问ActivePresentation失败: {ex.Message},继续使用轮询模式", LogHelper.LogType.Warning); _pptActivePresentation = null; _updateTime = DateTime.Now; + _lastPolledSlideNumber = -1; } int tempTotalPage = -1; @@ -577,11 +605,13 @@ namespace Ink_Canvas.Helpers SlidesCount = tempTotalPage; if (currentPage >= tempTotalPage) _polling = 1; else _polling = 0; + _lastPolledSlideNumber = currentPage; } else { SlidesCount = tempTotalPage; _polling = 0; + _lastPolledSlideNumber = -1; } } catch