diff --git a/Ink Canvas/App.xaml.cs b/Ink Canvas/App.xaml.cs
index 065caf0f..6c3dc892 100644
--- a/Ink Canvas/App.xaml.cs
+++ b/Ink Canvas/App.xaml.cs
@@ -8,6 +8,7 @@ using Newtonsoft.Json;
using Sentry;
using System;
using System.Diagnostics;
+using System.Globalization;
using System.IO;
using System.Linq;
using System.Net;
@@ -33,6 +34,20 @@ namespace Ink_Canvas
{
Mutex mutex;
+ public void ReleaseMutexForRestart()
+ {
+ try
+ {
+ if (mutex != null)
+ {
+ mutex.ReleaseMutex();
+ mutex.Dispose();
+ mutex = null;
+ }
+ }
+ catch { }
+ }
+
public static string[] StartArgs;
public static string RootPath = AppDomain.CurrentDomain.SetupInformation.ApplicationBase;
@@ -697,6 +712,16 @@ namespace Ink_Canvas
appStartTime = DateTime.Now;
appStartupStartTime = DateTime.Now;
+ var resourceSet = Strings.ResourceManager.GetResourceSet(CultureInfo.CurrentUICulture, true, true);
+ if (resourceSet != null)
+ {
+ foreach (System.Collections.DictionaryEntry entry in resourceSet)
+ {
+ if (entry.Key is string key && entry.Value is string value)
+ Current.Resources[key] = value;
+ }
+ }
+
// 根据设置决定是否显示启动画面
if (ShouldShowSplashScreen() && !IsLaunchByFileOrUri(e.Args))
{
diff --git a/Ink Canvas/MainWindow.xaml b/Ink Canvas/MainWindow.xaml
index 27f745e2..91c55768 100644
--- a/Ink Canvas/MainWindow.xaml
+++ b/Ink Canvas/MainWindow.xaml
@@ -656,11 +656,6 @@
FontSize="26" />
-
-
-
-
@@ -741,8 +736,6 @@
-
-
diff --git a/Ink Canvas/MainWindow.xaml.cs b/Ink Canvas/MainWindow.xaml.cs
index 00d7e870..7d909366 100644
--- a/Ink Canvas/MainWindow.xaml.cs
+++ b/Ink Canvas/MainWindow.xaml.cs
@@ -329,11 +329,9 @@ namespace Ink_Canvas
BlackBoardRightSidePageListScrollViewer.ReleaseTouchCapture(e.TouchDevice);
e.Handled = true;
};
- // 初始化无焦点模式开关
- ToggleSwitchNoFocusMode.IsOn = Settings.Advanced.IsNoFocusMode;
+ // 应用无焦点模式设置
ApplyNoFocusMode();
- // 初始化窗口置顶开关
- ToggleSwitchAlwaysOnTop.IsOn = Settings.Advanced.IsAlwaysOnTop;
+ // 应用窗口置顶设置
ApplyAlwaysOnTop();
// 添加窗口激活事件处理,确保置顶状态在窗口重新激活时得到保持
@@ -1367,16 +1365,17 @@ namespace Ink_Canvas
}), DispatcherPriority.Loaded);
}
- // 确保开关和设置同步
- ToggleSwitchNoFocusMode.IsOn = Settings.Advanced.IsNoFocusMode;
+ // 应用无焦点模式设置
ApplyNoFocusMode();
- ToggleSwitchAlwaysOnTop.IsOn = Settings.Advanced.IsAlwaysOnTop;
+ // 应用窗口置顶设置
ApplyAlwaysOnTop();
- // 初始化UIA置顶开关
- ToggleSwitchUIAccessTopMost.IsOn = Settings.Advanced.EnableUIAccessTopMost;
-
+ // 设置UIA置顶状态
App.IsUIAccessTopMostEnabled = Settings.Advanced.EnableUIAccessTopMost;
+ if (Settings.Advanced.EnableUIAccessTopMost && Settings.Advanced.IsAlwaysOnTop)
+ {
+ ApplyUIAccessTopMost();
+ }
// 初始化橡皮擦自动切换回批注模式开关
if (ToggleSwitchEnableEraserAutoSwitchBack != null)
@@ -1618,7 +1617,7 @@ namespace Ink_Canvas
/// 如果该设置为 true,将窗口置为普通状态并调整到主屏幕的左上角(0,0)及主屏幕分辨率的宽高,使窗口覆盖整个主屏幕;
/// 否则将窗口设为最大化状态。
///
- private void SetWindowMode()
+ public void SetWindowMode()
{
if (Settings.Advanced.WindowMode)
{
@@ -2997,7 +2996,7 @@ namespace Ink_Canvas
}
}
- private void ApplyNoFocusMode()
+ public void ApplyNoFocusMode()
{
var hwnd = new WindowInteropHelper(this).Handle;
int exStyle = GetWindowLong(hwnd, GWL_EXSTYLE);
@@ -3017,7 +3016,7 @@ namespace Ink_Canvas
}
}
- private void ApplyAlwaysOnTop()
+ public void ApplyAlwaysOnTop()
{
try
{
@@ -3209,51 +3208,6 @@ namespace Ink_Canvas
}
}
- private void ToggleSwitchNoFocusMode_Toggled(object sender, RoutedEventArgs e)
- {
- if (!isLoaded) return;
- var toggle = sender as ToggleSwitch;
- Settings.Advanced.IsNoFocusMode = toggle != null && toggle.IsOn;
- SaveSettingsToFile();
-
- if (isTemporarilyDisablingNoFocusMode)
- {
- isTemporarilyDisablingNoFocusMode = false;
- }
-
- ApplyNoFocusMode();
-
- // 如果启用了窗口置顶,需要重新应用置顶设置以处理无焦点模式的变化
- if (Settings.Advanced.IsAlwaysOnTop)
- {
- ApplyAlwaysOnTop();
- }
-
- }
-
- private void ToggleSwitchAlwaysOnTop_Toggled(object sender, RoutedEventArgs e)
- {
- if (!isLoaded) return;
- var toggle = sender as ToggleSwitch;
- Settings.Advanced.IsAlwaysOnTop = toggle != null && toggle.IsOn;
- SaveSettingsToFile();
- ApplyAlwaysOnTop();
- }
-
- private void ToggleSwitchUIAccessTopMost_Toggled(object sender, RoutedEventArgs e)
- {
- if (!isLoaded) return;
- var toggle = sender as ToggleSwitch;
- bool newValue = toggle != null && toggle.IsOn;
-
- Settings.Advanced.EnableUIAccessTopMost = newValue;
- SaveSettingsToFile();
- ApplyUIAccessTopMost();
-
- App.IsUIAccessTopMostEnabled = newValue;
-
- }
-
private void Window_Activated(object sender, EventArgs e)
{
// 窗口激活时,如果启用了置顶功能,重新应用置顶设置
@@ -4630,7 +4584,7 @@ namespace Ink_Canvas
///
/// 应用UIA置顶功能
///
- private void ApplyUIAccessTopMost()
+ public void ApplyUIAccessTopMost()
{
try
{
@@ -4651,8 +4605,8 @@ namespace Ink_Canvas
App.watchdogProcess = null;
}
+ App.StartWatchdogIfNeeded();
- // 调用UIAccess DLL
if (Environment.Is64BitProcess)
{
PrepareUIAccessX64();
@@ -4662,7 +4616,6 @@ namespace Ink_Canvas
PrepareUIAccessX86();
}
- App.StartWatchdogIfNeeded();
timerKillProcess.Start();
}
catch (Exception ex)
diff --git a/Ink Canvas/MainWindow_cs/MW_Settings.cs b/Ink Canvas/MainWindow_cs/MW_Settings.cs
index 7c3207a4..8fba2a1a 100644
--- a/Ink Canvas/MainWindow_cs/MW_Settings.cs
+++ b/Ink Canvas/MainWindow_cs/MW_Settings.cs
@@ -687,46 +687,6 @@ namespace Ink_Canvas
SaveSettingsToFile();
}
- ///
- /// 处理开机启动开关状态更改事件
- ///
- /// 事件发送者
- /// 路由事件参数
- ///
- /// 当开机启动开关状态更改时:
- /// 1. 如果开启,删除旧的启动项并创建新的启动项
- /// 2. 如果关闭,删除所有启动项
- ///
- private void ToggleSwitchRunAtStartup_Toggled(object sender, RoutedEventArgs e)
- {
- if (!isLoaded) return;
- if (ToggleSwitchRunAtStartup.IsOn)
- {
- StartAutomaticallyDel("InkCanvas");
- StartAutomaticallyCreate("Ink Canvas Annotation");
- }
- else
- {
- StartAutomaticallyDel("InkCanvas");
- StartAutomaticallyDel("Ink Canvas Annotation");
- }
- }
-
- ///
- /// 处理启动时折叠开关状态更改事件
- ///
- /// 事件发送者
- /// 路由事件参数
- ///
- /// 当启动时折叠开关状态更改时,保存设置到文件
- ///
- private void ToggleSwitchFoldAtStartup_Toggled(object sender, RoutedEventArgs e)
- {
- if (!isLoaded) return;
- Settings.Startup.IsFoldAtStartup = ToggleSwitchFoldAtStartup.IsOn;
- SaveSettingsToFile();
- }
-
///
/// 处理PowerPoint支持开关状态更改事件
///
@@ -3917,8 +3877,6 @@ namespace Ink_Canvas
SaveSettingsToFile();
LoadSettings(isStartup: false, skipAutoUpdateCheck: true);
isLoaded = true;
-
- ToggleSwitchRunAtStartup.IsOn = false;
}
catch (Exception ex) { System.Diagnostics.Debug.WriteLine(ex); }
@@ -4205,14 +4163,6 @@ namespace Ink_Canvas
SaveSettingsToFile();
}
- private void ToggleSwitchWindowMode_Toggled(object sender, RoutedEventArgs e)
- {
- if (!isLoaded) return;
- Settings.Advanced.WindowMode = ToggleSwitchWindowMode.IsOn;
- SaveSettingsToFile();
- SetWindowMode();
- }
-
private void ToggleSwitchIsAutoBackupBeforeUpdate_Toggled(object sender, RoutedEventArgs e)
{
if (!isLoaded) return;
diff --git a/Ink Canvas/MainWindow_cs/MW_SettingsToLoad.cs b/Ink Canvas/MainWindow_cs/MW_SettingsToLoad.cs
index 7ca4aea2..23fd71fc 100644
--- a/Ink Canvas/MainWindow_cs/MW_SettingsToLoad.cs
+++ b/Ink Canvas/MainWindow_cs/MW_SettingsToLoad.cs
@@ -216,24 +216,6 @@ namespace Ink_Canvas
{
}
- try
- {
- if (File.Exists(Environment.GetFolderPath(Environment.SpecialFolder.Startup) +
- "\\Ink Canvas Annotation.lnk"))
- {
- ToggleSwitchRunAtStartup.IsOn = true;
- }
- else
- {
- ToggleSwitchRunAtStartup.IsOn = false;
- }
- }
- catch (Exception ex)
- {
- LogHelper.WriteLogToFile(ex.ToString(), LogHelper.LogType.Error);
- ToggleSwitchRunAtStartup.IsOn = false;
- }
-
if (Settings.Startup != null)
{
if (isStartup)
@@ -243,11 +225,6 @@ namespace Ink_Canvas
DelAutoSavedFiles.DeleteFilesOlder(Settings.Automation.AutoSavedStrokesLocation,
Settings.Automation.AutoDelSavedFilesDaysThreshold);
}
-
- if (Settings.Startup.IsFoldAtStartup && !App.StartWithBoardMode)
- {
- FoldFloatingBar_MouseUp(Fold_Icon, null);
- }
}
if (Settings.Startup.IsEnableNibMode)
@@ -331,8 +308,6 @@ namespace Ink_Canvas
AutoUpdateWithSilenceStartTimeComboBox, AutoUpdateWithSilenceEndTimeComboBox);
AutoUpdateWithSilenceStartTimeComboBox.SelectedItem = Settings.Startup.AutoUpdateWithSilenceStartTime;
AutoUpdateWithSilenceEndTimeComboBox.SelectedItem = Settings.Startup.AutoUpdateWithSilenceEndTime;
-
- ToggleSwitchFoldAtStartup.IsOn = Settings.Startup.IsFoldAtStartup;
}
else
{
@@ -1003,7 +978,6 @@ namespace Ink_Canvas
ToggleSwitchIsLogEnabled.IsOn = Settings.Advanced.IsLogEnabled;
ToggleSwitchIsSaveLogByDate.IsOn = Settings.Advanced.IsSaveLogByDate;
ToggleSwitchIsSecondConfimeWhenShutdownApp.IsOn = Settings.Advanced.IsSecondConfirmWhenShutdownApp;
- ToggleSwitchWindowMode.IsOn = Settings.Advanced.WindowMode;
ToggleSwitchIsSpecialScreen.IsOn = Settings.Advanced.IsSpecialScreen;
ToggleSwitchIsEnableUriScheme.IsOn = Settings.Advanced.IsEnableUriScheme;
ToggleSwitchIsQuadIR.IsOn = Settings.Advanced.IsQuadIR;
diff --git a/Ink Canvas/Properties/Strings.en-US.resx b/Ink Canvas/Properties/Strings.en-US.resx
index 36ee52db..2955f65e 100644
--- a/Ink Canvas/Properties/Strings.en-US.resx
+++ b/Ink Canvas/Properties/Strings.en-US.resx
@@ -258,6 +258,27 @@
# UIA topmost requires admin to take effect.
+
+ Topmost Mode
+
+
+ Normal Topmost
+
+
+ UIA Topmost (Requires Admin)
+
+
+ Switching to UIA topmost mode requires a restart to take effect. Restart now?
+
+
+ Switching to normal topmost mode requires a restart to take effect. Restart now?
+
+
+ Restart as Administrator
+
+
+ Switch to Non-Admin Mode
+
Auto-update
diff --git a/Ink Canvas/Properties/Strings.resx b/Ink Canvas/Properties/Strings.resx
index 483d13e0..69d55a09 100644
--- a/Ink Canvas/Properties/Strings.resx
+++ b/Ink Canvas/Properties/Strings.resx
@@ -273,6 +273,27 @@
# 开启UIA置顶后,软件需要管理员启动才能置顶…
+
+ 置顶模式
+
+
+ 普通置顶
+
+
+ UIA置顶(需要管理员权限)
+
+
+ 切换到UIA置顶模式需要重启软件才能生效,是否立即重启?
+
+
+ 切换到普通置顶模式需要重启软件才能生效,是否立即重启?
+
+
+ 重启到管理员模式
+
+
+ 切换到非管理员模式
+
自动检查更新
diff --git a/Ink Canvas/Windows/SettingsViews/Pages/StartupPage.xaml b/Ink Canvas/Windows/SettingsViews/Pages/StartupPage.xaml
index 10db149b..f5001078 100644
--- a/Ink Canvas/Windows/SettingsViews/Pages/StartupPage.xaml
+++ b/Ink Canvas/Windows/SettingsViews/Pages/StartupPage.xaml
@@ -8,6 +8,7 @@
xmlns:ikw="http://schemas.inkore.net/lib/ui/wpf"
xmlns:i18n="clr-namespace:Ink_Canvas.MarkupExtensions"
xmlns:sys="clr-namespace:System;assembly=mscorlib"
+ xmlns:controls="clr-namespace:Ink_Canvas.Controls;assembly=InkCanvas.Controls"
mc:Ignorable="d"
Title="启动">
@@ -15,9 +16,7 @@
-
4
-