improve:PowerPoint联动增强
This commit is contained in:
@@ -292,6 +292,27 @@ namespace Ink_Canvas
|
|||||||
{
|
{
|
||||||
string reason = e.Reason == SessionEndReasons.Logoff ? "用户注销" : "系统关机";
|
string reason = e.Reason == SessionEndReasons.Logoff ? "用户注销" : "系统关机";
|
||||||
WriteCrashLog($"系统会话即将结束: {reason}");
|
WriteCrashLog($"系统会话即将结束: {reason}");
|
||||||
|
|
||||||
|
// 清理PowerPoint进程守护
|
||||||
|
try
|
||||||
|
{
|
||||||
|
// 获取主窗口实例并清理PowerPoint进程守护
|
||||||
|
var mainWindow = Application.Current.MainWindow as MainWindow;
|
||||||
|
if (mainWindow != null)
|
||||||
|
{
|
||||||
|
// 通过反射调用StopPowerPointProcessMonitoring方法
|
||||||
|
var method = mainWindow.GetType().GetMethod("StopPowerPointProcessMonitoring",
|
||||||
|
System.Reflection.BindingFlags.NonPublic | System.Reflection.BindingFlags.Instance);
|
||||||
|
method?.Invoke(mainWindow, null);
|
||||||
|
|
||||||
|
WriteCrashLog("PowerPoint进程守护已在系统关机时清理");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
catch (Exception ex)
|
||||||
|
{
|
||||||
|
WriteCrashLog($"清理PowerPoint进程守护失败: {ex.Message}");
|
||||||
|
}
|
||||||
|
|
||||||
DeviceIdentifier.SaveUsageStatsOnShutdown();
|
DeviceIdentifier.SaveUsageStatsOnShutdown();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -443,6 +443,55 @@ namespace Ink_Canvas.Helpers
|
|||||||
LogHelper.WriteLogToFile($"取消PPT事件注册失败: {ex.GetType().Name} - {ex.Message}", LogHelper.LogType.Warning);
|
LogHelper.WriteLogToFile($"取消PPT事件注册失败: {ex.GetType().Name} - {ex.Message}", LogHelper.LogType.Warning);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// 释放COM对象
|
||||||
|
try
|
||||||
|
{
|
||||||
|
if (Marshal.IsComObject(CurrentSlide))
|
||||||
|
{
|
||||||
|
Marshal.ReleaseComObject(CurrentSlide);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
catch (Exception ex)
|
||||||
|
{
|
||||||
|
LogHelper.WriteLogToFile($"释放CurrentSlide COM对象失败: {ex}", LogHelper.LogType.Warning);
|
||||||
|
}
|
||||||
|
|
||||||
|
try
|
||||||
|
{
|
||||||
|
if (Marshal.IsComObject(CurrentSlides))
|
||||||
|
{
|
||||||
|
Marshal.ReleaseComObject(CurrentSlides);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
catch (Exception ex)
|
||||||
|
{
|
||||||
|
LogHelper.WriteLogToFile($"释放CurrentSlides COM对象失败: {ex}", LogHelper.LogType.Warning);
|
||||||
|
}
|
||||||
|
|
||||||
|
try
|
||||||
|
{
|
||||||
|
if (Marshal.IsComObject(CurrentPresentation))
|
||||||
|
{
|
||||||
|
Marshal.ReleaseComObject(CurrentPresentation);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
catch (Exception ex)
|
||||||
|
{
|
||||||
|
LogHelper.WriteLogToFile($"释放CurrentPresentation COM对象失败: {ex}", LogHelper.LogType.Warning);
|
||||||
|
}
|
||||||
|
|
||||||
|
try
|
||||||
|
{
|
||||||
|
if (Marshal.IsComObject(PPTApplication))
|
||||||
|
{
|
||||||
|
Marshal.ReleaseComObject(PPTApplication);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
catch (Exception ex)
|
||||||
|
{
|
||||||
|
LogHelper.WriteLogToFile($"释放PPTApplication COM对象失败: {ex}", LogHelper.LogType.Warning);
|
||||||
|
}
|
||||||
|
|
||||||
// 清理引用
|
// 清理引用
|
||||||
PPTApplication = null;
|
PPTApplication = null;
|
||||||
CurrentPresentation = null;
|
CurrentPresentation = null;
|
||||||
|
|||||||
Binary file not shown.
Reference in New Issue
Block a user