From 4fb73c155ba627c4d4df388676b77f829eef0400 Mon Sep 17 00:00:00 2001 From: CJKmkp <2564608840@qq.com> Date: Sat, 20 Dec 2025 18:11:27 +0800 Subject: [PATCH] =?UTF-8?q?improve:PPT=E7=BF=BB=E9=A1=B5=E6=89=93=E6=96=AD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Ink Canvas/Helpers/PPTManager.cs | 52 ++++++++++++++++++++++++++++-- Ink Canvas/MainWindow_cs/MW_PPT.cs | 2 +- 2 files changed, 51 insertions(+), 3 deletions(-) diff --git a/Ink Canvas/Helpers/PPTManager.cs b/Ink Canvas/Helpers/PPTManager.cs index 732409ad..a104508e 100644 --- a/Ink Canvas/Helpers/PPTManager.cs +++ b/Ink Canvas/Helpers/PPTManager.cs @@ -1,4 +1,5 @@ using Microsoft.Office.Interop.PowerPoint; +using Microsoft.Office.Core; using System; using System.Collections.Generic; using System.Diagnostics; @@ -718,7 +719,7 @@ namespace Ink_Canvas.Helpers } } - public bool TryNavigateNext() + public bool TryNavigateNext(bool skipAnimations = false) { try { @@ -729,7 +730,54 @@ namespace Ink_Canvas.Helpers if (slideShowWindow?.View != null) { slideShowWindow.Activate(); - slideShowWindow.View.Next(); + + var view = slideShowWindow.View; + var currentPosition = 0; + var totalSlides = 0; + + try + { + currentPosition = view.CurrentShowPosition; + totalSlides = slideShowWindow.Presentation?.Slides?.Count ?? 0; + } + catch + { + } + + try + { + view.Next(); + } + catch (Exception ex) + { + LogHelper.WriteLogToFile($"调用下一页失败: {ex}", LogHelper.LogType.Warning); + } + + if (skipAnimations && currentPosition > 0 && totalSlides > 0) + { + int positionAfterNext = currentPosition; + try + { + positionAfterNext = view.CurrentShowPosition; + } + catch + { + } + + if (positionAfterNext == currentPosition && currentPosition < totalSlides) + { + try + { + view.GotoSlide(currentPosition + 1, MsoTriState.msoTrue); + return true; + } + catch (Exception ex) + { + LogHelper.WriteLogToFile($"强制跳转到下一页失败: {ex}", LogHelper.LogType.Warning); + } + } + } + return true; } return false; diff --git a/Ink Canvas/MainWindow_cs/MW_PPT.cs b/Ink Canvas/MainWindow_cs/MW_PPT.cs index 40421c05..62f3ba06 100644 --- a/Ink Canvas/MainWindow_cs/MW_PPT.cs +++ b/Ink Canvas/MainWindow_cs/MW_PPT.cs @@ -1533,7 +1533,7 @@ namespace Ink_Canvas strokesToSave = inkCanvas.Strokes.Clone(); } - if (_pptManager?.TryNavigateNext() == true) + if (_pptManager?.TryNavigateNext(skipAnimations: true) == true) { var currentSlideAfterNavigate = _pptManager?.GetCurrentSlideNumber() ?? 0;