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 57d842b8..c8c2dfbd 100644
Binary files a/Ink Canvas/obj/Debug/net472/InkCanvasForClass.csproj.AssemblyReference.cache and b/Ink Canvas/obj/Debug/net472/InkCanvasForClass.csproj.AssemblyReference.cache differ