diff --git a/Ink Canvas/MainWindow_cs/MW_PPT.cs b/Ink Canvas/MainWindow_cs/MW_PPT.cs index 913955dd..07ba61ae 100644 --- a/Ink Canvas/MainWindow_cs/MW_PPT.cs +++ b/Ink Canvas/MainWindow_cs/MW_PPT.cs @@ -1,4 +1,4 @@ -using Ink_Canvas.Helpers; +using Ink_Canvas.Helpers; using iNKORE.UI.WPF.Modern; using Microsoft.Office.Core; using Microsoft.Office.Interop.PowerPoint; @@ -592,6 +592,13 @@ namespace Ink_Canvas { private async void PptApplication_SlideShowBegin(SlideShowWindow Wn) { try { + // 修改加载路径到软件根目录下的Saves文件夹 + var folderPath = Path.Combine( + AppDomain.CurrentDomain.BaseDirectory, + "Saves", + @"Auto Saved - Presentations\" + Wn.Presentation.Name + "_" + Wn.Presentation.Slides.Count + ); + if (Settings.Automation.IsAutoFoldInPPTSlideShow && !isFloatingBarFolded) await FoldFloatingBar(new object()); else if (isFloatingBarFolded) await UnFoldFloatingBar(new object()); @@ -630,13 +637,9 @@ namespace Ink_Canvas { //检查是否有已有墨迹,并加载 if (Settings.PowerPointSettings.IsAutoSaveStrokesInPowerPoint) - if (Directory.Exists(Settings.Automation.AutoSavedStrokesLocation + - @"\Auto Saved - Presentations\" + Wn.Presentation.Name + "_" + - Wn.Presentation.Slides.Count)) { + if (Directory.Exists(folderPath)) { LogHelper.WriteLogToFile("Found saved strokes", LogHelper.LogType.Trace); - var files = new DirectoryInfo(Settings.Automation.AutoSavedStrokesLocation + - @"\Auto Saved - Presentations\" + Wn.Presentation.Name + "_" + - Wn.Presentation.Slides.Count).GetFiles(); + var files = new DirectoryInfo(folderPath).GetFiles(); var count = 0; foreach (var file in files) if (file.Name != "Position") { @@ -718,9 +721,16 @@ namespace Ink_Canvas { isEnteredSlideShowEndEvent = true; if (Settings.PowerPointSettings.IsAutoSaveStrokesInPowerPoint) { - var folderPath = Settings.Automation.AutoSavedStrokesLocation + @"\Auto Saved - Presentations\" + - Pres.Name + "_" + Pres.Slides.Count; + // 修改保存路径到软件根目录下的Saves文件夹 + var folderPath = Path.Combine( + AppDomain.CurrentDomain.BaseDirectory, + "Saves", + @"Auto Saved - Presentations\" + Pres.Name + "_" + Pres.Slides.Count + ); + + // 确保目录存在 if (!Directory.Exists(folderPath)) Directory.CreateDirectory(folderPath); + try { File.WriteAllText(folderPath + "/Position", previousSlideID.ToString()); } @@ -735,21 +745,16 @@ namespace Ink_Canvas { var srcBuf = new byte[memoryStreams[i].Length]; memoryStreams[i].Position = 0; var byteLength = memoryStreams[i].Read(srcBuf, 0, srcBuf.Length); - File.WriteAllBytes(folderPath + @"\" + i.ToString("0000") + ".icstk", srcBuf); - LogHelper.WriteLogToFile(string.Format( - "Saved strokes for Slide {0}, size={1}, byteLength={2}", i.ToString(), - memoryStreams[i].Length, byteLength)); + // 使用Path.Combine构建文件路径 + File.WriteAllBytes(Path.Combine(folderPath, i.ToString("0000") + ".icstk"), srcBuf); } else { - if (File.Exists(folderPath + @"\" + i.ToString("0000") + ".icstk")) - File.Delete(folderPath + @"\" + i.ToString("0000") + ".icstk"); + var filePath = Path.Combine(folderPath, i.ToString("0000") + ".icstk"); + if (File.Exists(filePath)) File.Delete(filePath); } } catch (Exception ex) { - LogHelper.WriteLogToFile( - $"Failed to save strokes for Slide {i}\n{ex.ToString()}", - LogHelper.LogType.Error); - if (File.Exists(folderPath + @"\" + i.ToString("0000") + ".icstk")) - File.Delete(folderPath + @"\" + i.ToString("0000") + ".icstk"); + // 新增错误处理逻辑 + LogHelper.WriteLogToFile($"保存第{i}页墨迹失败: {ex.Message}", LogHelper.LogType.Error); } } diff --git a/Ink Canvas/MainWindow_cs/MW_Save&OpenStrokes.cs b/Ink Canvas/MainWindow_cs/MW_Save&OpenStrokes.cs index 0f57b64d..cab4b519 100644 --- a/Ink Canvas/MainWindow_cs/MW_Save&OpenStrokes.cs +++ b/Ink Canvas/MainWindow_cs/MW_Save&OpenStrokes.cs @@ -36,35 +36,28 @@ namespace Ink_Canvas { if (!Directory.Exists(savePath)) Directory.CreateDirectory(savePath); string savePathWithName; if (currentMode != 0) // 黑板模式下 - savePathWithName = savePath + @"\" + DateTime.Now.ToString("yyyy-MM-dd HH-mm-ss-fff") + " Page-" + - CurrentWhiteboardIndex + " StrokesCount-" + inkCanvas.Strokes.Count + ".icstk"; + savePathWithName = savePath + @"\" + DateTime.Now.ToString("yyyy-MM-dd HH-mm-ss-fff") + " Page-" + + CurrentWhiteboardIndex + " StrokesCount-" + inkCanvas.Strokes.Count + ".icstk"; else - //savePathWithName = savePath + @"\" + DateTime.Now.ToString("u").Replace(':', '-') + ".icstk"; savePathWithName = savePath + @"\" + DateTime.Now.ToString("yyyy-MM-dd HH-mm-ss-fff") + ".icstk"; try { - using (FileStream fs = new FileStream(savePathWithName, FileMode.Create)) { // 修复未定义的filePath引用 + using (FileStream fs = new FileStream(savePathWithName, FileMode.Create)) { inkCanvas.Strokes.Save(fs); } } catch (Exception ex) when (ex is UnauthorizedAccessException || ex is DirectoryNotFoundException) { - var docPath = Path.Combine( - Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments), - "Auto Saved - Annotation Strokes", - DateTime.Now.ToString("yyyyMMdd"), - Path.GetFileNameWithoutExtension(savePathWithName) + "_retry.icstk"); // 使用正确的原始文件名 + // 修改异常处理中的备用路径为软件根目录下的Saves文件夹 + string fallbackPath = Path.Combine(appDirectory, "Saves"); + Directory.CreateDirectory(fallbackPath); + + string fileName = Path.GetFileNameWithoutExtension(savePathWithName) + "_retry.icstk"; + string newPath = Path.Combine(fallbackPath, fileName); try { - // 修改保存路径为软件所在目录下的 Saves 文件夹 - string saveDirectory = Path.Combine(appDirectory, "Saves"); - Directory.CreateDirectory(saveDirectory); // 自动创建 Saves 目录 - - string fileName = Path.GetFileNameWithoutExtension(savePathWithName) + "_retry.icstk"; // 使用正确的原始文件名 - string newPath = Path.Combine(saveDirectory, fileName); // 新路径组合 - using (FileStream fs = new FileStream(newPath, FileMode.Create)) { inkCanvas.Strokes.Save(fs); - savePathWithName = newPath; // 更新通知使用的路径变量 + savePathWithName = newPath; } } catch (Exception fallbackEx) { @@ -91,7 +84,6 @@ namespace Ink_Canvas { AnimationsHelper.HideWithSlideAndFade(BoardBorderTools); var openFileDialog = new OpenFileDialog(); - openFileDialog.InitialDirectory = Settings.Automation.AutoSavedStrokesLocation; openFileDialog.Title = "打开墨迹文件"; openFileDialog.Filter = "Ink Canvas Strokes File (*.icstk)|*.icstk"; if (openFileDialog.ShowDialog() != true) return; diff --git a/Ink Canvas/MainWindow_cs/MW_Screenshot.cs b/Ink Canvas/MainWindow_cs/MW_Screenshot.cs index a7f700cf..977d0a42 100644 --- a/Ink Canvas/MainWindow_cs/MW_Screenshot.cs +++ b/Ink Canvas/MainWindow_cs/MW_Screenshot.cs @@ -84,16 +84,9 @@ namespace Ink_Canvas { // 获取日期文件夹路径 private string GetDateFolderPath(string fileName) { - if (string.IsNullOrWhiteSpace(fileName)) { - fileName = DateTime.Now.ToString("HH-mm-ss"); - } - - var basePath = Settings.Automation.AutoSavedStrokesLocation; + var basePath = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "Saves"); var dateFolder = DateTime.Now.ToString("yyyyMMdd"); - var fullPath = Path.Combine( - basePath, - "Auto Saved - Screenshots", - dateFolder); + var fullPath = Path.Combine(basePath, "Auto Saved - Screenshots", dateFolder); try { if (!Directory.Exists(fullPath)) { @@ -115,7 +108,7 @@ namespace Ink_Canvas { } private string GetDefaultFolderPath() { - var basePath = Settings.Automation.AutoSavedStrokesLocation; + var basePath = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "Saves"); var screenshotsFolder = Path.Combine(basePath, "Auto Saved - Screenshots"); try {