improve:PPT翻页

This commit is contained in:
2026-01-17 20:23:33 +08:00
parent 9c611698c7
commit de9056739b
+48 -28
View File
@@ -913,33 +913,43 @@ namespace Ink_Canvas.Helpers
public bool TryNavigateNext()
{
object slideShowWindows = null;
object slideShowWindow = null;
object view = null;
try
{
if (!IsConnected || !IsInSlideShow || PPTApplication == null) return false;
if (!Marshal.IsComObject(PPTApplication)) return false;
slideShowWindows = PPTApplication.SlideShowWindows;
// 在新线程中执行翻页操作,避免等待动画完成
new Thread(() =>
{
try
{
object slideShowWindows = PPTApplication.SlideShowWindows;
if (slideShowWindows != null)
{
dynamic ssw = slideShowWindows;
slideShowWindow = ssw[1];
object slideShowWindow = ssw[1];
if (slideShowWindow != null)
{
dynamic sswObj = slideShowWindow;
try
{
sswObj.Activate();
view = sswObj.View;
}
catch { }
try
{
object view = sswObj.View;
if (view != null)
{
dynamic viewObj = view;
viewObj.Next();
return true;
}
}
catch { }
SafeReleaseComObject(slideShowWindow);
}
SafeReleaseComObject(slideShowWindows);
}
return false;
}
catch (COMException comEx)
{
@@ -949,50 +959,60 @@ namespace Ink_Canvas.Helpers
DisconnectFromPPT();
}
LogHelper.WriteLogToFile($"切换到下一页失败: {comEx.Message}", LogHelper.LogType.Error);
return false;
}
catch (Exception ex)
{
LogHelper.WriteLogToFile($"切换到下一页失败: {ex}", LogHelper.LogType.Error);
return false;
}
finally
}).Start();
return true;
}
catch (Exception ex)
{
SafeReleaseComObject(view);
SafeReleaseComObject(slideShowWindow);
SafeReleaseComObject(slideShowWindows);
LogHelper.WriteLogToFile($"启动下一页线程失败: {ex}", LogHelper.LogType.Error);
return false;
}
}
public bool TryNavigatePrevious()
{
object slideShowWindows = null;
object slideShowWindow = null;
object view = null;
try
{
if (!IsConnected || !IsInSlideShow || PPTApplication == null) return false;
if (!Marshal.IsComObject(PPTApplication)) return false;
slideShowWindows = PPTApplication.SlideShowWindows;
// 在新线程中执行翻页操作,避免等待动画完成
new Thread(() =>
{
try
{
object slideShowWindows = PPTApplication.SlideShowWindows;
if (slideShowWindows != null)
{
dynamic ssw = slideShowWindows;
slideShowWindow = ssw[1];
object slideShowWindow = ssw[1];
if (slideShowWindow != null)
{
dynamic sswObj = slideShowWindow;
try
{
sswObj.Activate();
view = sswObj.View;
}
catch { }
try
{
object view = sswObj.View;
if (view != null)
{
dynamic viewObj = view;
viewObj.Previous();
return true;
}
}
catch { }
SafeReleaseComObject(slideShowWindow);
}
SafeReleaseComObject(slideShowWindows);
}
return false;
}
catch (COMException comEx)
{
@@ -1002,18 +1022,18 @@ namespace Ink_Canvas.Helpers
DisconnectFromPPT();
}
LogHelper.WriteLogToFile($"切换到上一页失败: {comEx.Message}", LogHelper.LogType.Error);
return false;
}
catch (Exception ex)
{
LogHelper.WriteLogToFile($"切换到上一页失败: {ex}", LogHelper.LogType.Error);
return false;
}
finally
}).Start();
return true;
}
catch (Exception ex)
{
SafeReleaseComObject(view);
SafeReleaseComObject(slideShowWindow);
SafeReleaseComObject(slideShowWindows);
LogHelper.WriteLogToFile($"启动上一页线程失败: {ex}", LogHelper.LogType.Error);
return false;
}
}