improve:联动模块

This commit is contained in:
2025-07-18 21:29:55 +08:00
parent a92e58abf1
commit a0dc60a403
+87 -1
View File
@@ -194,7 +194,7 @@ namespace Ink_Canvas {
var pptProcesses = Process.GetProcessesByName("POWERPNT");
// 根据设置和进程状态决定模式
isWPSMode = isWPSSupportOn && wpsRunning;
isWPSMode = isWPSSupportOn;
LogHelper.WriteLogToFile($"初始化模式: {(isWPSMode ? "WPS" : "PowerPoint")}", LogHelper.LogType.Info);
@@ -490,6 +490,18 @@ namespace Ink_Canvas {
catch (Exception ex) {
LogHelper.WriteLogToFile(ex.ToString(), LogHelper.LogType.Error);
}
// ========== 新增:WPS进程清理调用 ==========
if (isWPSMode && pptApplication != null)
{
try
{
if (pptApplication.Presentations.Count == 0)
{
TryCloseExtraWpsProcesses();
}
}
catch { }
}
}
private bool isPresentationHaveBlackSpace = false;
@@ -872,6 +884,18 @@ namespace Ink_Canvas {
await Application.Current.Dispatcher.InvokeAsync(() => {
ViewboxFloatingBarMarginAnimation(100, true);
});
// ========== 新增:WPS进程清理调用 ==========
if (isWPSMode && pptApplication != null)
{
try
{
if (pptApplication.Presentations.Count == 0)
{
TryCloseExtraWpsProcesses();
}
}
catch { }
}
}
catch (Exception ex) {
LogHelper.WriteLogToFile(ex.ToString(), LogHelper.LogType.Error);
@@ -1311,5 +1335,67 @@ namespace Ink_Canvas {
base.OnClosed(e);
}
// ========== 新增:安全关闭多余WPS进程的方法 ==========
/// <summary>
/// 检查并安全关闭多余的WPS进程(仅当所有WPS都未打开PPT时)
/// </summary>
private void TryCloseExtraWpsProcesses()
{
try
{
// 检查所有WPS进程是否都没有打开PPT
bool allWpsNoPpt = true;
foreach (var processName in GetPossibleWPSProcessNames())
{
foreach (var process in Process.GetProcessesByName(processName))
{
try
{
dynamic wpsApp = null;
try
{
wpsApp = Marshal.GetActiveObject(processName + ".Application");
}
catch { }
if (wpsApp != null)
{
if (wpsApp.Presentations.Count > 0)
{
allWpsNoPpt = false;
break;
}
}
}
catch { }
}
if (!allWpsNoPpt) break;
}
if (allWpsNoPpt)
{
// 所有WPS都没有打开PPT,可以安全关闭
foreach (var processName in GetPossibleWPSProcessNames())
{
foreach (var process in Process.GetProcessesByName(processName))
{
try
{
process.Kill();
LogHelper.WriteLogToFile($"已终止WPS进程: {process.ProcessName}({process.Id})", LogHelper.LogType.Info);
}
catch (Exception ex)
{
LogHelper.WriteLogToFile($"终止WPS进程失败: {ex.Message}", LogHelper.LogType.Error);
}
}
}
}
}
catch (Exception ex)
{
LogHelper.WriteLogToFile($"WPS进程清理异常: {ex.Message}", LogHelper.LogType.Error);
}
}
}
}