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