improve:PPT联动
This commit is contained in:
@@ -70,9 +70,9 @@ namespace Ink_Canvas
|
|||||||
|
|
||||||
#region PPT Application Variables
|
#region PPT Application Variables
|
||||||
public static Microsoft.Office.Interop.PowerPoint.Application pptApplication;
|
public static Microsoft.Office.Interop.PowerPoint.Application pptApplication;
|
||||||
public static Presentation presentation;
|
public static dynamic presentation;
|
||||||
public static Slides slides;
|
public static dynamic slides;
|
||||||
public static Slide slide;
|
public static dynamic slide;
|
||||||
public static int slidescount;
|
public static int slidescount;
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
@@ -523,6 +523,7 @@ namespace Ink_Canvas
|
|||||||
{
|
{
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
|
dynamic presObj = pres;
|
||||||
Application.Current.Dispatcher.InvokeAsync(() =>
|
Application.Current.Dispatcher.InvokeAsync(() =>
|
||||||
{
|
{
|
||||||
// 在初始化墨迹管理器之前,先清理画布上的所有墨迹
|
// 在初始化墨迹管理器之前,先清理画布上的所有墨迹
|
||||||
@@ -534,26 +535,26 @@ namespace Ink_Canvas
|
|||||||
TimeMachineHistories[0] = null;
|
TimeMachineHistories[0] = null;
|
||||||
}
|
}
|
||||||
|
|
||||||
_singlePPTInkManager?.InitializePresentation(pres);
|
_singlePPTInkManager?.InitializePresentation(presObj as Presentation);
|
||||||
|
|
||||||
// 处理跳转到首页或上次播放页的逻辑
|
// 处理跳转到首页或上次播放页的逻辑
|
||||||
HandlePresentationOpenNavigation(pres);
|
HandlePresentationOpenNavigation(presObj);
|
||||||
|
|
||||||
// 检查隐藏幻灯片
|
// 检查隐藏幻灯片
|
||||||
if (Settings.PowerPointSettings.IsNotifyHiddenPage)
|
if (Settings.PowerPointSettings.IsNotifyHiddenPage)
|
||||||
{
|
{
|
||||||
CheckAndNotifyHiddenSlides(pres);
|
CheckAndNotifyHiddenSlides(presObj);
|
||||||
}
|
}
|
||||||
|
|
||||||
// 检查自动播放设置
|
// 检查自动播放设置
|
||||||
if (Settings.PowerPointSettings.IsNotifyAutoPlayPresentation)
|
if (Settings.PowerPointSettings.IsNotifyAutoPlayPresentation)
|
||||||
{
|
{
|
||||||
CheckAndNotifyAutoPlaySettings(pres);
|
CheckAndNotifyAutoPlaySettings(presObj);
|
||||||
}
|
}
|
||||||
|
|
||||||
_pptUIManager?.UpdateConnectionStatus(true);
|
_pptUIManager?.UpdateConnectionStatus(true);
|
||||||
|
|
||||||
LogHelper.WriteLogToFile($"已打开新演示文稿: {pres.Name},墨迹状态已清理", LogHelper.LogType.Event);
|
LogHelper.WriteLogToFile($"已打开新演示文稿: {presObj.Name},墨迹状态已清理", LogHelper.LogType.Event);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
catch (Exception ex)
|
catch (Exception ex)
|
||||||
@@ -613,6 +614,7 @@ namespace Ink_Canvas
|
|||||||
{
|
{
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
|
dynamic wnObj = wn;
|
||||||
if (Settings.Automation.IsAutoFoldInPPTSlideShow)
|
if (Settings.Automation.IsAutoFoldInPPTSlideShow)
|
||||||
{
|
{
|
||||||
if (!isFloatingBarFolded)
|
if (!isFloatingBarFolded)
|
||||||
@@ -630,21 +632,21 @@ namespace Ink_Canvas
|
|||||||
|
|
||||||
await Application.Current.Dispatcher.InvokeAsync(async () =>
|
await Application.Current.Dispatcher.InvokeAsync(async () =>
|
||||||
{
|
{
|
||||||
Presentation activePresentation = null;
|
dynamic activePresentation = null;
|
||||||
int currentSlide = 0;
|
int currentSlide = 0;
|
||||||
int totalSlides = 0;
|
int totalSlides = 0;
|
||||||
|
|
||||||
if (wn?.View != null && wn.Presentation != null)
|
if (wnObj?.View != null && wnObj.Presentation != null)
|
||||||
{
|
{
|
||||||
activePresentation = wn.Presentation;
|
activePresentation = wnObj.Presentation;
|
||||||
currentSlide = wn.View.CurrentShowPosition;
|
currentSlide = wnObj.View.CurrentShowPosition;
|
||||||
totalSlides = activePresentation.Slides.Count;
|
totalSlides = activePresentation.Slides.Count;
|
||||||
// 初始化当前播放页码跟踪
|
// 初始化当前播放页码跟踪
|
||||||
_currentSlideShowPosition = currentSlide;
|
_currentSlideShowPosition = currentSlide;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
activePresentation = _pptManager?.GetCurrentActivePresentation() as Presentation;
|
activePresentation = _pptManager?.GetCurrentActivePresentation();
|
||||||
currentSlide = _pptManager?.GetCurrentSlideNumber() ?? 0;
|
currentSlide = _pptManager?.GetCurrentSlideNumber() ?? 0;
|
||||||
totalSlides = _pptManager?.SlidesCount ?? 0;
|
totalSlides = _pptManager?.SlidesCount ?? 0;
|
||||||
// 初始化当前播放页码跟踪
|
// 初始化当前播放页码跟踪
|
||||||
@@ -657,7 +659,7 @@ namespace Ink_Canvas
|
|||||||
{
|
{
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
_singlePPTInkManager.InitializePresentation(activePresentation);
|
_singlePPTInkManager.InitializePresentation(activePresentation as Presentation);
|
||||||
}
|
}
|
||||||
catch (Exception)
|
catch (Exception)
|
||||||
{
|
{
|
||||||
@@ -787,15 +789,16 @@ namespace Ink_Canvas
|
|||||||
{
|
{
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
|
dynamic wnObj = wn;
|
||||||
Application.Current.Dispatcher.InvokeAsync(() =>
|
Application.Current.Dispatcher.InvokeAsync(() =>
|
||||||
{
|
{
|
||||||
if (wn?.View == null || wn.Presentation == null)
|
if (wnObj?.View == null || wnObj.Presentation == null)
|
||||||
{
|
{
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
var currentSlide = wn.View.CurrentShowPosition;
|
var currentSlide = wnObj.View.CurrentShowPosition;
|
||||||
var activePresentation = wn.Presentation;
|
dynamic activePresentation = wnObj.Presentation;
|
||||||
var totalSlides = activePresentation.Slides.Count;
|
var totalSlides = activePresentation.Slides.Count;
|
||||||
|
|
||||||
// 更新当前播放页码
|
// 更新当前播放页码
|
||||||
@@ -816,6 +819,7 @@ namespace Ink_Canvas
|
|||||||
{
|
{
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
|
dynamic presObj = pres;
|
||||||
if (Settings.Automation.IsAutoFoldAfterPPTSlideShow && !isFloatingBarFolded)
|
if (Settings.Automation.IsAutoFoldAfterPPTSlideShow && !isFloatingBarFolded)
|
||||||
{
|
{
|
||||||
FoldFloatingBar_MouseUp(new object(), null);
|
FoldFloatingBar_MouseUp(new object(), null);
|
||||||
@@ -837,9 +841,9 @@ namespace Ink_Canvas
|
|||||||
// 如果无法获取,尝试从演示文稿的SlideShowWindow获取
|
// 如果无法获取,尝试从演示文稿的SlideShowWindow获取
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
if (pres.SlideShowWindow != null && pres.SlideShowWindow.View != null)
|
if (presObj.SlideShowWindow != null && presObj.SlideShowWindow.View != null)
|
||||||
{
|
{
|
||||||
currentPage = pres.SlideShowWindow.View.CurrentShowPosition;
|
currentPage = presObj.SlideShowWindow.View.CurrentShowPosition;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
catch { }
|
catch { }
|
||||||
@@ -847,7 +851,7 @@ namespace Ink_Canvas
|
|||||||
}
|
}
|
||||||
|
|
||||||
// 保存墨迹和位置信息
|
// 保存墨迹和位置信息
|
||||||
_singlePPTInkManager?.SaveAllStrokesToFile(pres, currentPage);
|
_singlePPTInkManager?.SaveAllStrokesToFile(presObj as Presentation, currentPage);
|
||||||
|
|
||||||
await Application.Current.Dispatcher.InvokeAsync(() =>
|
await Application.Current.Dispatcher.InvokeAsync(() =>
|
||||||
{
|
{
|
||||||
@@ -947,7 +951,7 @@ namespace Ink_Canvas
|
|||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
#region Helper Methods
|
#region Helper Methods
|
||||||
private void HandlePresentationOpenNavigation(Presentation pres)
|
private void HandlePresentationOpenNavigation(dynamic pres)
|
||||||
{
|
{
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
@@ -966,7 +970,7 @@ namespace Ink_Canvas
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private void ShowPreviousPageNotification(Presentation pres)
|
private void ShowPreviousPageNotification(dynamic pres)
|
||||||
{
|
{
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
@@ -980,7 +984,7 @@ namespace Ink_Canvas
|
|||||||
|
|
||||||
if (!File.Exists(positionFile)) return;
|
if (!File.Exists(positionFile)) return;
|
||||||
|
|
||||||
if (int.TryParse(File.ReadAllText(positionFile), out var page) && page > 0)
|
if (int.TryParse(File.ReadAllText(positionFile), out int page) && page > 0)
|
||||||
{
|
{
|
||||||
_lastPlaybackPage = page;
|
_lastPlaybackPage = page;
|
||||||
new YesOrNoNotificationWindow($"上次播放到了第 {page} 页, 是否立即跳转", () =>
|
new YesOrNoNotificationWindow($"上次播放到了第 {page} 页, 是否立即跳转", () =>
|
||||||
@@ -1013,14 +1017,14 @@ namespace Ink_Canvas
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private void CheckAndNotifyHiddenSlides(Presentation pres)
|
private void CheckAndNotifyHiddenSlides(dynamic pres)
|
||||||
{
|
{
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
bool hasHiddenSlides = false;
|
bool hasHiddenSlides = false;
|
||||||
if (pres?.Slides != null)
|
if (pres?.Slides != null)
|
||||||
{
|
{
|
||||||
foreach (Slide slide in pres.Slides)
|
foreach (dynamic slide in pres.Slides)
|
||||||
{
|
{
|
||||||
if (slide.SlideShowTransition.Hidden == MsoTriState.msoTrue)
|
if (slide.SlideShowTransition.Hidden == MsoTriState.msoTrue)
|
||||||
{
|
{
|
||||||
@@ -1040,7 +1044,7 @@ namespace Ink_Canvas
|
|||||||
{
|
{
|
||||||
if (pres?.Slides != null)
|
if (pres?.Slides != null)
|
||||||
{
|
{
|
||||||
foreach (Slide slide in pres.Slides)
|
foreach (dynamic slide in pres.Slides)
|
||||||
{
|
{
|
||||||
if (slide.SlideShowTransition.Hidden == MsoTriState.msoTrue)
|
if (slide.SlideShowTransition.Hidden == MsoTriState.msoTrue)
|
||||||
slide.SlideShowTransition.Hidden = MsoTriState.msoFalse;
|
slide.SlideShowTransition.Hidden = MsoTriState.msoFalse;
|
||||||
@@ -1066,7 +1070,7 @@ namespace Ink_Canvas
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private void CheckAndNotifyAutoPlaySettings(Presentation pres)
|
private void CheckAndNotifyAutoPlaySettings(dynamic pres)
|
||||||
{
|
{
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
@@ -1075,7 +1079,7 @@ namespace Ink_Canvas
|
|||||||
bool hasSlideTimings = false;
|
bool hasSlideTimings = false;
|
||||||
if (pres?.Slides != null)
|
if (pres?.Slides != null)
|
||||||
{
|
{
|
||||||
foreach (Slide slide in pres.Slides)
|
foreach (dynamic slide in pres.Slides)
|
||||||
{
|
{
|
||||||
if (slide.SlideShowTransition.AdvanceOnTime == MsoTriState.msoTrue &&
|
if (slide.SlideShowTransition.AdvanceOnTime == MsoTriState.msoTrue &&
|
||||||
slide.SlideShowTransition.AdvanceTime > 0)
|
slide.SlideShowTransition.AdvanceTime > 0)
|
||||||
|
|||||||
Reference in New Issue
Block a user