improve:PPT模块

This commit is contained in:
2025-07-21 16:15:42 +08:00
parent e37e847a8b
commit 5cf409ce0b
+22 -7
View File
@@ -222,16 +222,16 @@ namespace Ink_Canvas {
// 0x800401E3: 操作无法使用
// 0x80004005: 未指定错误(常见于PPT已关闭)
// 0x800706B5: RPC服务器不可用
if (hr == 0x800401E3 || hr == 0x80004005 || hr == 0x800706B5)
// 0x80048240: 没有活动的演示文稿
// 0x800706BE: 远程过程调用失败
if (hr == 0x800401E3 || hr == 0x80004005 || hr == 0x800706B5 || hr == 0x80048240 || hr == 0x800706BE)
{
// 可选:LogHelper.WriteLogToFile($"忽略已知COM异常: {hr:X}", LogHelper.LogType.Trace);
Application.Current.Dispatcher.Invoke(() => { BtnPPTSlideShow.Visibility = Visibility.Collapsed; });
timerCheckPPT.Start();
return;
}
}
LogHelper.WriteLogToFile($"检查PPT状态失败: {ex.ToString()}", LogHelper.LogType.Error);
//StackPanelPPTControls.Visibility = Visibility.Collapsed;
Application.Current.Dispatcher.Invoke(() => { BtnPPTSlideShow.Visibility = Visibility.Collapsed; });
timerCheckPPT.Start();
}
@@ -1410,6 +1410,13 @@ namespace Ink_Canvas {
private void StartWppProcessCheckTimer()
{
// 新增:WPS联动未启用时不查杀wpp进程
if (!Settings.PowerPointSettings.IsSupportWPS)
{
LogHelper.WriteLogToFile("WPS联动未启用,跳过WPP进程查杀", LogHelper.LogType.Trace);
return;
}
if (wppProcessCheckTimer != null)
{
wppProcessCheckTimer.Stop();
@@ -1424,6 +1431,14 @@ namespace Ink_Canvas {
private void WppProcessCheckTimer_Elapsed(object sender, System.Timers.ElapsedEventArgs e)
{
// 新增:WPS联动未启用时不查杀wpp进程
if (!Settings.PowerPointSettings.IsSupportWPS)
{
LogHelper.WriteLogToFile("WPS联动未启用,跳过WPP进程查杀", LogHelper.LogType.Trace);
StopWppProcessCheckTimer();
return;
}
try
{
if (wppProcess == null || hasWppProcessID == false)
@@ -1970,10 +1985,10 @@ namespace Ink_Canvas {
{
try
{
if (process.ProcessName.ToLower().Contains("wps") ||
process.ProcessName.ToLower().Contains("powerpnt") ||
process.ProcessName.ToLower().Contains("presentation") ||
process.ProcessName.ToLower().Contains("wpp"))
var pname = process.ProcessName.ToLower();
if ((pname.Contains("wps") || pname.Contains("wpp") || pname.Contains("presentation"))
// 排除PowerPoint官方进程
&& !pname.Contains("powerpnt"))
{
wpsProcesses.Add(process);
LogHelper.WriteLogToFile($"发现WPS进程: {process.ProcessName} (PID: {process.Id})", LogHelper.LogType.Trace);