add:PPT动画跳过

This commit is contained in:
2026-02-22 10:50:11 +08:00
parent 656863a7d0
commit 3e701718d3
7 changed files with 73 additions and 6 deletions
+6
View File
@@ -41,6 +41,12 @@ namespace Ink_Canvas.Helpers
set => _inner.IsSupportWPS = value;
}
public bool SkipAnimationsWhenNavigating
{
get => _inner.SkipAnimationsWhenNavigating;
set => _inner.SkipAnimationsWhenNavigating = value;
}
public int SlidesCount => _inner.SlidesCount;
public object PPTApplication => _inner.PPTApplication;
+1
View File
@@ -16,6 +16,7 @@ namespace Ink_Canvas.Helpers
bool IsConnected { get; }
bool IsInSlideShow { get; }
bool IsSupportWPS { get; set; }
bool SkipAnimationsWhenNavigating { get; set; }
int SlidesCount { get; }
object PPTApplication { get; }
+6 -2
View File
@@ -125,6 +125,8 @@ namespace Ink_Canvas.Helpers
}
}
public bool IsSupportWPS { get; set; } = false;
public bool SkipAnimationsWhenNavigating { get; set; } = false;
#endregion
#region Private Fields
@@ -883,7 +885,8 @@ namespace Ink_Canvas.Helpers
if (slideShowWindow != null)
{
dynamic sswObj = slideShowWindow;
sswObj.Activate();
if (!SkipAnimationsWhenNavigating)
sswObj.Activate();
view = sswObj.View;
if (view != null)
{
@@ -936,7 +939,8 @@ namespace Ink_Canvas.Helpers
if (slideShowWindow != null)
{
dynamic sswObj = slideShowWindow;
sswObj.Activate();
if (!SkipAnimationsWhenNavigating)
sswObj.Activate();
view = sswObj.View;
if (view != null)
{
+7 -3
View File
@@ -124,6 +124,7 @@ namespace Ink_Canvas.Helpers
}
public bool IsSupportWPS { get; set; } = false;
public bool SkipAnimationsWhenNavigating { get; set; } = false;
/// <summary>
/// 当前演示文稿的总页数(每次按需计算,不缓存 COM 对象)。
@@ -734,7 +735,8 @@ namespace Ink_Canvas.Helpers
if (slideShowWindow != null)
{
dynamic sswObj = slideShowWindow;
sswObj.Activate();
if (!SkipAnimationsWhenNavigating)
sswObj.Activate();
view = sswObj.View;
if (view != null)
{
@@ -788,7 +790,8 @@ namespace Ink_Canvas.Helpers
if (slideShowWindow != null)
{
dynamic sswObj = slideShowWindow;
sswObj.Activate();
if (!SkipAnimationsWhenNavigating)
sswObj.Activate();
view = sswObj.View;
if (view != null)
{
@@ -842,7 +845,8 @@ namespace Ink_Canvas.Helpers
if (slideShowWindow != null)
{
dynamic sswObj = slideShowWindow;
sswObj.Activate();
if (!SkipAnimationsWhenNavigating)
sswObj.Activate();
view = sswObj.View;
if (view != null)
{
+9
View File
@@ -1517,6 +1517,15 @@
IsOn="False" FontFamily="Microsoft YaHei UI" FontWeight="Bold"
Toggled="ToggleSwitchPowerPointEnhancement_Toggled" />
</ui:SimpleStackPanel>
<ui:SimpleStackPanel Orientation="Horizontal" HorizontalAlignment="Left">
<Image Source="/Resources/Icons-png/Powerpoint.png" Margin="0,0,6,0" Width="28"
Height="28" VerticalAlignment="Center" />
<TextBlock Foreground="#fafafa" Text="抢占焦点放映(用于跳过PPT动画)" VerticalAlignment="Center"
FontSize="14" Margin="0,0,16,0" />
<ui:ToggleSwitch OnContent="" OffContent="" Name="ToggleSwitchSkipAnimationsWhenGoNext"
IsOn="False" FontFamily="Microsoft YaHei UI" FontWeight="Bold"
Toggled="ToggleSwitchSkipAnimationsWhenGoNext_Toggled" />
</ui:SimpleStackPanel>
<ui:SimpleStackPanel Orientation="Horizontal" HorizontalAlignment="Left">
<Image Source="/Resources/Icons-png/Powerpoint.png" Margin="0,0,6,0" Width="28"
Height="28" VerticalAlignment="Center" />
+42 -1
View File
@@ -244,6 +244,7 @@ namespace Ink_Canvas
}
_pptManager.IsSupportWPS = Settings.PowerPointSettings.IsSupportWPS;
_pptManager.SkipAnimationsWhenNavigating = Settings.PowerPointSettings.SkipAnimationsWhenGoNext;
// 注册事件
_pptManager.PPTConnectionChanged += OnPPTConnectionChanged;
@@ -1005,11 +1006,13 @@ namespace Ink_Canvas
if (Settings.PowerPointSettings.IsAlwaysGoToFirstPageOnReenter)
{
_pptManager?.TryNavigateToSlide(1);
if (Settings.PowerPointSettings.SkipAnimationsWhenGoNext) { try { this.Activate(); } catch { } }
}
else if (_shouldNavigateToLastPage && _lastPlaybackPage > 0)
{
_pptManager?.TryNavigateToSlide(_lastPlaybackPage);
_shouldNavigateToLastPage = false; // 重置标志位
if (Settings.PowerPointSettings.SkipAnimationsWhenGoNext) { try { this.Activate(); } catch { } }
}
// 更新UI状态
@@ -1428,6 +1431,7 @@ namespace Ink_Canvas
if (Settings.PowerPointSettings.IsAlwaysGoToFirstPageOnReenter)
{
_pptManager?.TryNavigateToSlide(1);
if (Settings.PowerPointSettings.SkipAnimationsWhenGoNext) { try { this.Activate(); } catch { } }
}
else if (Settings.PowerPointSettings.IsNotifyPreviousPage)
{
@@ -1483,6 +1487,7 @@ namespace Ink_Canvas
{
pres.Windows[1].View.GotoSlide(page);
}
if (Settings.PowerPointSettings.SkipAnimationsWhenGoNext) { try { this.Activate(); } catch { } }
}
}
catch (Exception ex)
@@ -1876,10 +1881,25 @@ namespace Ink_Canvas
}
}
// 更新PPT管理器的WPS支持设置
// 更新PPT管理器的WPS支持设置与翻页跳过动画设置
if (_pptManager != null)
{
_pptManager.IsSupportWPS = Settings.PowerPointSettings.IsSupportWPS;
_pptManager.SkipAnimationsWhenNavigating = Settings.PowerPointSettings.SkipAnimationsWhenGoNext;
}
SaveSettingsToFile();
}
private void ToggleSwitchSkipAnimationsWhenGoNext_Toggled(object sender, RoutedEventArgs e)
{
if (!isLoaded) return;
Settings.PowerPointSettings.SkipAnimationsWhenGoNext = ToggleSwitchSkipAnimationsWhenGoNext.IsOn;
if (_pptManager != null)
{
_pptManager.SkipAnimationsWhenNavigating = Settings.PowerPointSettings.SkipAnimationsWhenGoNext;
}
SaveSettingsToFile();
@@ -1923,6 +1943,11 @@ namespace Ink_Canvas
// 执行翻页
if (_pptManager?.TryNavigatePrevious() == true)
{
// 若启用了“翻页时跳过PPT动画”,显示导航后把焦点拉回本窗口
if (Settings.PowerPointSettings.SkipAnimationsWhenGoNext)
{
try { this.Activate(); } catch { }
}
}
else
{
@@ -1961,6 +1986,17 @@ namespace Ink_Canvas
// 执行翻页
if (_pptManager?.TryNavigateNext() == true)
{
// 若启用了“翻页时跳过PPT动画”,翻页后主动把焦点拉回本窗口,避免 PPT 抢焦点
if (Settings.PowerPointSettings.SkipAnimationsWhenGoNext)
{
try
{
this.Activate();
}
catch
{
}
}
}
else
{
@@ -2097,6 +2133,11 @@ namespace Ink_Canvas
if (_pptManager.TryShowSlideNavigation())
{
LogHelper.WriteLogToFile("成功显示PPT幻灯片导航", LogHelper.LogType.Trace);
// 若启用了“翻页时跳过PPT动画”,显示导航后把焦点拉回本窗口
if (Settings.PowerPointSettings.SkipAnimationsWhenGoNext)
{
try { this.Activate(); } catch { }
}
}
else
{
@@ -680,6 +680,8 @@ namespace Ink_Canvas
ToggleSwitchSupportWPS.IsOn = Settings.PowerPointSettings.IsSupportWPS;
ToggleSwitchSkipAnimationsWhenGoNext.IsOn = Settings.PowerPointSettings.SkipAnimationsWhenGoNext;
ToggleSwitchPowerPointEnhancement.IsOn = Settings.PowerPointSettings.EnablePowerPointEnhancement;
ToggleSwitchAutoSaveScreenShotInPowerPoint.IsOn =