improve:PPT翻页
This commit is contained in:
@@ -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;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user