From a4e95285d8b1b7a57ffe13adddbb8c2c1a2eb966 Mon Sep 17 00:00:00 2001 From: CJK_mkp <113243675+CJKmkp@users.noreply.github.com> Date: Sat, 31 May 2025 09:58:22 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E5=A4=8DPPT=E8=BF=9B=E7=A8=8B?= =?UTF-8?q?=E5=88=9B=E5=BB=BA=E9=87=8D=E5=A4=8D=E8=B0=83=E7=94=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Ink Canvas/MainWindow_cs/MW_PPT.cs | 52 +++++++++--------- ...vasForClass.csproj.AssemblyReference.cache | Bin 34776 -> 35040 bytes 2 files changed, 27 insertions(+), 25 deletions(-) diff --git a/Ink Canvas/MainWindow_cs/MW_PPT.cs b/Ink Canvas/MainWindow_cs/MW_PPT.cs index 9dae245e..ed6928bf 100644 --- a/Ink Canvas/MainWindow_cs/MW_PPT.cs +++ b/Ink Canvas/MainWindow_cs/MW_PPT.cs @@ -81,39 +81,41 @@ namespace Ink_Canvas { public static bool IsShowingRestoreHiddenSlidesWindow = false; private static bool IsShowingAutoplaySlidesWindow = false; private static bool hasLoggedPresentationWarning = false; + private bool isPowerPointInitialized = false; + - private void TimerCheckPPT_Elapsed(object sender, ElapsedEventArgs e) { - if (IsShowingRestoreHiddenSlidesWindow || IsShowingAutoplaySlidesWindow) return; + private void TimerCheckPPT_Elapsed(object sender, ElapsedEventArgs e) + { + // 如果正在显示特定窗口,则跳过检查 + if (IsShowingRestoreHiddenSlidesWindow || IsShowingAutoplaySlidesWindow) + return; + try { - pptApplication = (Microsoft.Office.Interop.PowerPoint.Application)Marshal.GetActiveObject("PowerPoint.Application"); - } - catch (COMException) - { - // 创建新实例或记录错误 - } - - try { - var processes = Process.GetProcessesByName("wpp"); - if (processes.Length > 0 && !isWPSSupportOn) return; - - pptApplication = (Microsoft.Office.Interop.PowerPoint.Application)Activator.CreateInstance(Marshal.GetTypeFromCLSID(new Guid("91493441-5A91-11CF-8700-00AA0060263B"))); - new ComAwareEventInfo(typeof(EApplication_Event), "SlideShowBegin").AddEventHandler(pptApplication, new EApplication_SlideShowBeginEventHandler(this.PptApplication_SlideShowBegin)); - new ComAwareEventInfo(typeof(EApplication_Event), "SlideShowEnd").AddEventHandler(pptApplication, new EApplication_SlideShowEndEventHandler(this.PptApplication_SlideShowEnd)); - new ComAwareEventInfo(typeof(EApplication_Event), "SlideShowNextSlide").AddEventHandler(pptApplication, new EApplication_SlideShowNextSlideEventHandler(this.PptApplication_SlideShowNextSlide)); - - pptApplication = - (Microsoft.Office.Interop.PowerPoint.Application)Marshal.GetActiveObject("PowerPoint.Application"); - if (pptApplication == null || pptApplication.Presentations.Count == 0) + // 检查是否已有初始化的 PowerPoint 实例 + if (!isPowerPointInitialized) { - if (!hasLoggedPresentationWarning) + // 检查 WPS 进程(如果不支持则返回) + var processes = Process.GetProcessesByName("wpp"); + if (processes.Length > 0 && !isWPSSupportOn) + return; + + // 尝试获取已运行的 PowerPoint 实例 + try { - LogHelper.WriteLogToFile("No active presentation found", LogHelper.LogType.Warning); - hasLoggedPresentationWarning = true; + pptApplication = (Microsoft.Office.Interop.PowerPoint.Application)Marshal.GetActiveObject("PowerPoint.Application"); } - return; + catch (COMException) + { + // 如果没有找到运行中的实例,则创建新实例 + pptApplication = (Microsoft.Office.Interop.PowerPoint.Application)Activator.CreateInstance( + Marshal.GetTypeFromCLSID(new Guid("91493441-5A91-11CF-8700-00AA0060263B"))); + } + + isPowerPointInitialized = true; } + if (pptApplication != null) { timerCheckPPT.Stop(); diff --git a/Ink Canvas/obj/Debug/net472/InkCanvasForClass.csproj.AssemblyReference.cache b/Ink Canvas/obj/Debug/net472/InkCanvasForClass.csproj.AssemblyReference.cache index 5f25b1e8905042c241461840e7c1c65d2035bf7b..491d60f44290cc44779b1ec51e1ffa829d8ebff0 100644 GIT binary patch delta 285 zcmcc7&-7p-(*`9*jt!IR|K6W}mt*pNR_V!{ETT+|VUrtMyVrCwQtqT&$%T{ns%qvSQ*7tOD&M%sLAw+9)17ivkN6!tYneUinA!bH^%rqs@ zOrQM3l+>ch7eh2BH!${XzQl5ek*)qe$mq#i*p!5s7#J8B>wyGI1CRlv8N)%gn2=~o PcxIkk1l*F@?6wU6p2J@t delta 93 zcmaDbk?BT1(*`9*j&SijMVHxkIVR_`Nl#8-5oKhUd@)~j^L54)CN_xNWJeYgi0I_& fjD4G%Snn{h-M824%-F*+(ICv