improve:PPT联动

This commit is contained in:
2026-01-18 02:27:48 +08:00
parent 9fee9a1d6a
commit 266c5c0dc8
2 changed files with 47 additions and 9 deletions
+46 -8
View File
@@ -318,7 +318,7 @@ namespace Ink_Canvas.Helpers
{ {
LogHelper.WriteLogToFile("检测到演示文稿切换,断开连接", LogHelper.LogType.Trace); LogHelper.WriteLogToFile("检测到演示文稿切换,断开连接", LogHelper.LogType.Trace);
DisconnectFromPPT(); DisconnectFromPPT();
break; continue;
} }
} }
catch (COMException ex) when ((uint)ex.ErrorCode == 0x8001010A) catch (COMException ex) when ((uint)ex.ErrorCode == 0x8001010A)
@@ -347,22 +347,60 @@ namespace Ink_Canvas.Helpers
{ {
count = slideShowWindows.Count; count = slideShowWindows.Count;
} }
PPTROTConnectionHelper.SafeReleaseComObject(slideShowWindows);
if (activePresentation != null && count > 0) if (activePresentation != null && count > 0)
{ {
isSlideShowActive = true; isSlideShowActive = true;
slideShowWindow = activePresentation.SlideShowWindow; dynamic activeSlideShowWindow = null;
if (_pptSlideShowWindow == null || !PPTROTConnectionHelper.IsValidSlideShowWindow(_pptSlideShowWindow))
try
{ {
if (!PPTROTConnectionHelper.AreComObjectsEqual(_pptSlideShowWindow, slideShowWindow)) for (int i = 1; i <= count; i++)
{ {
PPTROTConnectionHelper.SafeReleaseComObject(_pptSlideShowWindow); try
_pptSlideShowWindow = slideShowWindow; {
LogHelper.WriteLogToFile("发现窗口,成功设置 slideshowwindow", LogHelper.LogType.Trace); dynamic ssw = slideShowWindows[i];
if (PPTROTConnectionHelper.IsSlideShowWindowActive(ssw))
{
activeSlideShowWindow = ssw;
LogHelper.WriteLogToFile($"找到活跃的放映窗口: {i}/{count}", LogHelper.LogType.Trace);
break;
}
}
catch { }
} }
} }
catch { }
if (activeSlideShowWindow == null)
{
try
{
activeSlideShowWindow = activePresentation.SlideShowWindow;
}
catch { }
}
if (activeSlideShowWindow != null)
{
slideShowWindow = activeSlideShowWindow;
if (_pptSlideShowWindow == null || !PPTROTConnectionHelper.IsValidSlideShowWindow(_pptSlideShowWindow))
{
if (!PPTROTConnectionHelper.AreComObjectsEqual(_pptSlideShowWindow, slideShowWindow))
{
PPTROTConnectionHelper.SafeReleaseComObject(_pptSlideShowWindow);
_pptSlideShowWindow = slideShowWindow;
LogHelper.WriteLogToFile("发现窗口,成功设置 slideshowwindow", LogHelper.LogType.Trace);
}
}
}
PPTROTConnectionHelper.SafeReleaseComObject(slideShowWindows);
}
else
{
PPTROTConnectionHelper.SafeReleaseComObject(slideShowWindows);
} }
} }
catch (COMException ex) when ((uint)ex.ErrorCode == 0x8001010A) catch (COMException ex) when ((uint)ex.ErrorCode == 0x8001010A)
+1 -1
View File
@@ -369,7 +369,7 @@ namespace Ink_Canvas.Helpers
return false; return false;
} }
private static bool IsSlideShowWindowActive(object sswObj) public static bool IsSlideShowWindowActive(object sswObj)
{ {
try try
{ {