From 406d01febfcf4f1e0332866db463f03656b9a5b3 Mon Sep 17 00:00:00 2001
From: CJKmkp <2564608840@qq.com>
Date: Sat, 13 Sep 2025 19:35:36 +0800
Subject: [PATCH] =?UTF-8?q?=E4=BC=98=E5=8C=96=E4=BB=A3=E7=A0=81?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
Ink Canvas/Helpers/GlobalHotkeyManager.cs | 91 +++++++++++++++---
Ink Canvas/Helpers/MultiPPTInkManager.cs | 1 -
Ink Canvas/Helpers/PPTInkManager.cs | 36 ++++++-
Ink Canvas/Helpers/PPTManager.cs | 2 -
Ink Canvas/MainWindow_cs/MW_PPT.cs | 2 -
...vasForClass.csproj.AssemblyReference.cache | Bin 38181 -> 38044 bytes
6 files changed, 110 insertions(+), 22 deletions(-)
diff --git a/Ink Canvas/Helpers/GlobalHotkeyManager.cs b/Ink Canvas/Helpers/GlobalHotkeyManager.cs
index d441f068..884df9bf 100644
--- a/Ink Canvas/Helpers/GlobalHotkeyManager.cs
+++ b/Ink Canvas/Helpers/GlobalHotkeyManager.cs
@@ -280,6 +280,17 @@ namespace Ink_Canvas.Helpers
return;
}
+ // 如果配置文件不存在,先创建默认配置文件
+ if (!File.Exists(HotkeyConfigFile))
+ {
+ LogHelper.WriteLogToFile($"快捷键配置文件不存在: {HotkeyConfigFile}", LogHelper.LogType.Warning);
+ LogHelper.WriteLogToFile("配置文件不存在,创建默认配置文件并注册默认快捷键");
+ CreateDefaultConfigFile();
+ RegisterDefaultHotkeys();
+ _hotkeysShouldBeRegistered = true;
+ return;
+ }
+
// 尝试从配置文件加载
if (LoadHotkeysFromConfigFile())
{
@@ -289,19 +300,9 @@ namespace Ink_Canvas.Helpers
}
else
{
- // 如果配置文件不存在或加载失败,使用默认快捷键
- if (!File.Exists(HotkeyConfigFile))
- {
- LogHelper.WriteLogToFile("配置文件不存在,注册默认快捷键");
- RegisterDefaultHotkeys();
- _hotkeysShouldBeRegistered = true;
- }
- else
- {
- LogHelper.WriteLogToFile("配置文件存在但加载失败,回退到默认快捷键", LogHelper.LogType.Warning);
- RegisterDefaultHotkeys();
- _hotkeysShouldBeRegistered = true;
- }
+ LogHelper.WriteLogToFile("配置文件存在但加载失败,回退到默认快捷键", LogHelper.LogType.Warning);
+ RegisterDefaultHotkeys();
+ _hotkeysShouldBeRegistered = true;
}
}
catch (Exception ex)
@@ -502,6 +503,70 @@ namespace Ink_Canvas.Helpers
}
}
+ ///
+ /// 创建默认的快捷键配置文件
+ ///
+ private void CreateDefaultConfigFile()
+ {
+ try
+ {
+ // 确保配置目录存在
+ string configDir = Path.GetDirectoryName(HotkeyConfigFile);
+ if (!Directory.Exists(configDir))
+ {
+ Directory.CreateDirectory(configDir);
+ }
+
+ // 创建默认配置对象
+ var config = new HotkeyConfig
+ {
+ Version = "1.0",
+ LastModified = DateTime.Now,
+ Hotkeys = new List()
+ };
+
+ // 添加默认快捷键配置
+ config.Hotkeys.AddRange(new[]
+ {
+ new HotkeyConfigItem { Name = "Undo", Key = Key.Z, Modifiers = ModifierKeys.Control },
+ new HotkeyConfigItem { Name = "Redo", Key = Key.Y, Modifiers = ModifierKeys.Control },
+ new HotkeyConfigItem { Name = "Clear", Key = Key.E, Modifiers = ModifierKeys.Control },
+ new HotkeyConfigItem { Name = "Paste", Key = Key.V, Modifiers = ModifierKeys.Control },
+ new HotkeyConfigItem { Name = "SelectTool", Key = Key.S, Modifiers = ModifierKeys.Alt },
+ new HotkeyConfigItem { Name = "DrawTool", Key = Key.D, Modifiers = ModifierKeys.Alt },
+ new HotkeyConfigItem { Name = "EraserTool", Key = Key.E, Modifiers = ModifierKeys.Alt },
+ new HotkeyConfigItem { Name = "BlackboardTool", Key = Key.B, Modifiers = ModifierKeys.Alt },
+ new HotkeyConfigItem { Name = "QuitDrawTool", Key = Key.Q, Modifiers = ModifierKeys.Alt },
+ new HotkeyConfigItem { Name = "Pen1", Key = Key.D1, Modifiers = ModifierKeys.Alt },
+ new HotkeyConfigItem { Name = "Pen2", Key = Key.D2, Modifiers = ModifierKeys.Alt },
+ new HotkeyConfigItem { Name = "Pen3", Key = Key.D3, Modifiers = ModifierKeys.Alt },
+ new HotkeyConfigItem { Name = "Pen4", Key = Key.D4, Modifiers = ModifierKeys.Alt },
+ new HotkeyConfigItem { Name = "Pen5", Key = Key.D5, Modifiers = ModifierKeys.Alt },
+ new HotkeyConfigItem { Name = "DrawLine", Key = Key.L, Modifiers = ModifierKeys.Alt },
+ new HotkeyConfigItem { Name = "Screenshot", Key = Key.C, Modifiers = ModifierKeys.Alt },
+ new HotkeyConfigItem { Name = "Hide", Key = Key.V, Modifiers = ModifierKeys.Alt },
+ new HotkeyConfigItem { Name = "Exit", Key = Key.Escape, Modifiers = ModifierKeys.None }
+ });
+
+ // 序列化为JSON
+ var settings = new JsonSerializerSettings
+ {
+ Formatting = Formatting.Indented
+ };
+
+ string jsonContent = JsonConvert.SerializeObject(config, settings);
+
+ // 写入配置文件
+ File.WriteAllText(HotkeyConfigFile, jsonContent, Encoding.UTF8);
+
+ LogHelper.WriteLogToFile($"已创建默认快捷键配置文件: {HotkeyConfigFile}", LogHelper.LogType.Event);
+ }
+ catch (Exception ex)
+ {
+ LogHelper.WriteLogToFile($"创建默认快捷键配置文件时出错: {ex.Message}", LogHelper.LogType.Error);
+ }
+ }
+
///
/// 从配置文件加载快捷键设置
///
diff --git a/Ink Canvas/Helpers/MultiPPTInkManager.cs b/Ink Canvas/Helpers/MultiPPTInkManager.cs
index 242d0c6d..c151dcec 100644
--- a/Ink Canvas/Helpers/MultiPPTInkManager.cs
+++ b/Ink Canvas/Helpers/MultiPPTInkManager.cs
@@ -449,7 +449,6 @@ namespace Ink_Canvas.Helpers
_currentActivePresentationId = "";
}
- LogHelper.WriteLogToFile($"已移除演示文稿管理器: {presentationId}", LogHelper.LogType.Trace);
}
catch (COMException comEx)
{
diff --git a/Ink Canvas/Helpers/PPTInkManager.cs b/Ink Canvas/Helpers/PPTInkManager.cs
index dbcc4cdb..c4821379 100644
--- a/Ink Canvas/Helpers/PPTInkManager.cs
+++ b/Ink Canvas/Helpers/PPTInkManager.cs
@@ -1,6 +1,7 @@
using Microsoft.Office.Interop.PowerPoint;
using System;
using System.IO;
+using System.Runtime.InteropServices;
using System.Security.Cryptography;
using System.Text;
using System.Windows.Ink;
@@ -71,7 +72,20 @@ namespace Ink_Canvas.Helpers
_currentPresentationId = GeneratePresentationId(presentation);
// 重新初始化内存流数组
- var slideCount = presentation.Slides.Count;
+ int slideCount = 0;
+ try
+ {
+ slideCount = presentation.Slides.Count;
+ }
+ catch (COMException comEx)
+ {
+ var hr = (uint)comEx.HResult;
+ if (hr == 0x80048010)
+ {
+ return;
+ }
+ throw;
+ }
_memoryStreams = new MemoryStream[slideCount + 2];
// 如果启用自动保存,尝试加载已保存的墨迹
@@ -122,7 +136,6 @@ namespace Ink_Canvas.Helpers
if (ms.Length > 0)
{
- LogHelper.WriteLogToFile($"已保存第{slideIndex}页墨迹,大小: {ms.Length} bytes", LogHelper.LogType.Trace);
}
}
}
@@ -265,7 +278,23 @@ namespace Ink_Canvas.Helpers
// 保存所有页面的墨迹
int savedCount = 0;
- for (int i = 1; i <= presentation.Slides.Count && i < _memoryStreams.Length; i++)
+ int slideCount = 0;
+
+ try
+ {
+ slideCount = presentation.Slides.Count;
+ }
+ catch (COMException comEx)
+ {
+ var hr = (uint)comEx.HResult;
+ if (hr == 0x80048010)
+ {
+ return;
+ }
+ throw;
+ }
+
+ for (int i = 1; i <= slideCount && i < _memoryStreams.Length; i++)
{
if (_memoryStreams[i] != null)
{
@@ -281,7 +310,6 @@ namespace Ink_Canvas.Helpers
File.WriteAllBytes(filePath, srcBuf);
savedCount++;
- LogHelper.WriteLogToFile($"已保存第{i}页墨迹,大小: {byteLength} bytes", LogHelper.LogType.Trace);
}
else
{
diff --git a/Ink Canvas/Helpers/PPTManager.cs b/Ink Canvas/Helpers/PPTManager.cs
index 7e117680..5753b477 100644
--- a/Ink Canvas/Helpers/PPTManager.cs
+++ b/Ink Canvas/Helpers/PPTManager.cs
@@ -514,7 +514,6 @@ namespace Ink_Canvas.Helpers
if (slideCount > 0)
{
SlidesCount = slideCount;
- LogHelper.WriteLogToFile($"成功读取PPT页数: {slideCount}", LogHelper.LogType.Trace);
}
else
{
@@ -661,7 +660,6 @@ namespace Ink_Canvas.Helpers
{
UpdateCurrentPresentationInfo();
SlideShowNextSlide?.Invoke(wn);
- LogHelper.WriteLogToFile($"幻灯片切换到第{wn?.View?.CurrentShowPosition}页", LogHelper.LogType.Trace);
}
catch (Exception ex)
{
diff --git a/Ink Canvas/MainWindow_cs/MW_PPT.cs b/Ink Canvas/MainWindow_cs/MW_PPT.cs
index 464f2a36..c6e5e916 100644
--- a/Ink Canvas/MainWindow_cs/MW_PPT.cs
+++ b/Ink Canvas/MainWindow_cs/MW_PPT.cs
@@ -744,7 +744,6 @@ namespace Ink_Canvas
// 使用防抖机制处理页面切换
HandleSlideSwitchWithDebounce(currentSlide, totalSlides);
- LogHelper.WriteLogToFile($"幻灯片切换到第{currentSlide}页", LogHelper.LogType.Trace);
});
}
catch (Exception ex)
@@ -1314,7 +1313,6 @@ namespace Ink_Canvas
if (_pptManager?.TryNavigateNext() == true)
{
// 翻页成功,等待事件处理墨迹切换
- LogHelper.WriteLogToFile("成功切换到下一页", LogHelper.LogType.Trace);
}
else
{
diff --git a/Ink Canvas/obj/Debug/net472/InkCanvasForClass.csproj.AssemblyReference.cache b/Ink Canvas/obj/Debug/net472/InkCanvasForClass.csproj.AssemblyReference.cache
index 57d842b8b7d92d5308ee26301638a87ff9085d80..c8c2dfbd497b829755ee6211820ad2e2d43c9d13 100644
GIT binary patch
delta 23
fcmZ3wifPVDCJr`6Lk0#0#>B~nPN5rP?WX_$OSlGi
delta 70
zcmbQUl4B~nPN5rP?War*kO`k`FUd8TkDE=&SuZ6ghmjGefZ>7T
XjqeIqIY4T;%1rbO^o$LR4J{b}mk1Gb