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