From 0ef8c12650c83acf713569f4fbe5618766630108 Mon Sep 17 00:00:00 2001
From: CJKmkp <2564608840@qq.com>
Date: Sat, 20 Sep 2025 17:06:11 +0800
Subject: [PATCH] improve:issue #180
---
.../FloatingWindowInterceptorManager.cs | 31 ++
.../Helpers/FloatingWindowInterceptor.cs | 382 ++++++++++++++++--
Ink Canvas/InkCanvasForClass.csproj | 3 +
Ink Canvas/MainWindow.xaml | 10 +-
.../MW_FloatingWindowInterceptor.cs | 31 ++
Ink Canvas/Resources/Icons-png/AiClass.png | Bin 0 -> 38588 bytes
Ink Canvas/Resources/Icons-png/天喻教育云.png | Bin 0 -> 10739 bytes
.../Resources/Icons-png/畅言智慧课堂.png | Bin 0 -> 147694 bytes
Ink Canvas/Resources/Settings.cs | 13 +
9 files changed, 428 insertions(+), 42 deletions(-)
create mode 100644 Ink Canvas/Resources/Icons-png/AiClass.png
create mode 100644 Ink Canvas/Resources/Icons-png/天喻教育云.png
create mode 100644 Ink Canvas/Resources/Icons-png/畅言智慧课堂.png
diff --git a/Ink Canvas/FloatingWindowInterceptorManager.cs b/Ink Canvas/FloatingWindowInterceptorManager.cs
index 9eb9f6ea..2c505220 100644
--- a/Ink Canvas/FloatingWindowInterceptorManager.cs
+++ b/Ink Canvas/FloatingWindowInterceptorManager.cs
@@ -124,6 +124,37 @@ namespace Ink_Canvas
{
_settings.InterceptRules[ruleName] = enabled;
}
+
+ // 获取规则信息以处理父子关系
+ var rule = _interceptor.GetInterceptRule(type);
+ if (rule != null)
+ {
+ // 如果是父规则,更新所有子规则的设置
+ if (rule.ChildTypes.Count > 0)
+ {
+ foreach (var childType in rule.ChildTypes)
+ {
+ var childRuleName = childType.ToString();
+ if (_settings.InterceptRules.ContainsKey(childRuleName))
+ {
+ _settings.InterceptRules[childRuleName] = enabled;
+ }
+ }
+ }
+ // 如果是子规则,更新父规则的设置
+ else if (rule.ParentType.HasValue)
+ {
+ var parentRule = _interceptor.GetInterceptRule(rule.ParentType.Value);
+ if (parentRule != null)
+ {
+ var parentRuleName = rule.ParentType.Value.ToString();
+ if (_settings.InterceptRules.ContainsKey(parentRuleName))
+ {
+ _settings.InterceptRules[parentRuleName] = parentRule.IsEnabled;
+ }
+ }
+ }
+ }
}
catch (Exception ex)
{
diff --git a/Ink Canvas/Helpers/FloatingWindowInterceptor.cs b/Ink Canvas/Helpers/FloatingWindowInterceptor.cs
index 33ffafac..5d401a71 100644
--- a/Ink Canvas/Helpers/FloatingWindowInterceptor.cs
+++ b/Ink Canvas/Helpers/FloatingWindowInterceptor.cs
@@ -1,6 +1,7 @@
using System;
using System.Collections.Generic;
using System.Diagnostics;
+using System.Linq;
using System.Runtime.InteropServices;
using System.Text;
using System.Threading;
@@ -19,6 +20,9 @@ namespace Ink_Canvas.Helpers
[DllImport("user32.dll")]
private static extern bool EnumWindows(EnumWindowsProc enumProc, IntPtr lParam);
+ [DllImport("user32.dll")]
+ private static extern bool EnumChildWindows(IntPtr hWndParent, EnumWindowsProc enumProc, IntPtr lParam);
+
[DllImport("user32.dll")]
private static extern IntPtr GetWindowThreadProcessId(IntPtr hWnd, out uint processId);
@@ -110,6 +114,10 @@ namespace Ink_Canvas.Helpers
///
SeewoPincoDrawingFloating,
///
+ /// 希沃品课教师端 桌面画板
+ ///
+ SeewoPincoBoardService,
+ ///
/// 希沃PPT小工具
///
SeewoPPTFloating,
@@ -122,18 +130,66 @@ namespace Ink_Canvas.Helpers
///
HiteAnnotationFloating,
///
- /// 畅言智慧课堂 桌面悬浮窗
+ /// 畅言智慧课堂 主栏悬浮窗
///
ChangYanFloating,
///
+ /// 畅言智慧课堂 画笔设置
+ ///
+ ChangYanBrushSettings,
+ ///
+ /// 畅言智慧课堂 滑动清除
+ ///
+ ChangYanSwipeClear,
+ ///
+ /// 畅言智慧课堂 互动
+ ///
+ ChangYanInteraction,
+ ///
+ /// 畅言智慧课堂 学科应用
+ ///
+ ChangYanSubjectApp,
+ ///
+ /// 畅言智慧课堂 管控
+ ///
+ ChangYanControl,
+ ///
+ /// 畅言智慧课堂 通用工具
+ ///
+ ChangYanCommonTools,
+ ///
+ /// 畅言智慧课堂 场景工具栏
+ ///
+ ChangYanSceneToolbar,
+ ///
+ /// 畅言智慧课堂 绘制窗口
+ ///
+ ChangYanDrawWindow,
+ ///
/// 畅言智慧课堂 PPT悬浮窗
///
ChangYanPptFloating,
///
+ /// 畅言智慧课堂 PPT页面控制
+ ///
+ ChangYanPptPageControl,
+ ///
+ /// 畅言智慧课堂 PPT返回
+ ///
+ ChangYanPptGoBack,
+ ///
+ /// 畅言智慧课堂 PPT预览
+ ///
+ ChangYanPptPreview,
+ ///
/// 天喻教育云互动课堂 桌面悬浮窗(包括PPT控件)
///
IntelligentClassFloating,
///
+ /// 天喻教育云互动课堂 PPT悬浮窗
+ ///
+ IntelligentClassPptFloating,
+ ///
/// 希沃桌面 画笔悬浮窗
///
SeewoDesktopAnnotationFloating,
@@ -155,6 +211,8 @@ namespace Ink_Canvas.Helpers
public bool IsEnabled { get; set; }
public bool RequiresAdmin { get; set; }
public string Description { get; set; }
+ public InterceptType? ParentType { get; set; }
+ public List ChildTypes { get; set; } = new List();
}
#endregion
@@ -206,8 +264,8 @@ namespace Ink_Canvas.Helpers
{
Type = InterceptType.SeewoWhiteboard3Floating,
ProcessName = "EasiNote",
- WindowTitlePattern = "",
- ClassNamePattern = "",
+ WindowTitlePattern = "Note",
+ ClassNamePattern = "HwndWrapper[EasiNote.exe;;",
IsEnabled = true,
RequiresAdmin = false,
Description = "希沃白板3 桌面悬浮窗"
@@ -219,7 +277,7 @@ namespace Ink_Canvas.Helpers
Type = InterceptType.SeewoWhiteboard5Floating,
ProcessName = "EasiNote",
WindowTitlePattern = "",
- ClassNamePattern = "",
+ ClassNamePattern = "HwndWrapper[EasiNote;;",
IsEnabled = true,
RequiresAdmin = false,
Description = "希沃白板5 桌面悬浮窗"
@@ -231,43 +289,61 @@ namespace Ink_Canvas.Helpers
Type = InterceptType.SeewoWhiteboard5CFloating,
ProcessName = "EasiNote5C",
WindowTitlePattern = "",
- ClassNamePattern = "",
+ ClassNamePattern = "HwndWrapper[EasiNote5C;;",
IsEnabled = true,
RequiresAdmin = false,
Description = "希沃白板5C 桌面悬浮窗"
};
- // 希沃品课教师端 桌面悬浮窗
+ // 希沃品课教师端 桌面悬浮窗(父规则)
_interceptRules[InterceptType.SeewoPincoSideBarFloating] = new InterceptRule
{
Type = InterceptType.SeewoPincoSideBarFloating,
ProcessName = "ClassIn",
- WindowTitlePattern = "",
- ClassNamePattern = "",
+ WindowTitlePattern = "希沃品课——appBar",
+ ClassNamePattern = "Chrome_WidgetWin_1",
IsEnabled = true,
RequiresAdmin = false,
- Description = "希沃品课教师端 桌面悬浮窗"
+ Description = "希沃品课教师端 桌面悬浮窗",
+ ParentType = null,
+ ChildTypes = new List { InterceptType.SeewoPincoDrawingFloating, InterceptType.SeewoPincoBoardService }
};
- // 希沃品课教师端 画笔悬浮窗
+ // 希沃品课教师端 画笔悬浮窗(子规则)
_interceptRules[InterceptType.SeewoPincoDrawingFloating] = new InterceptRule
{
Type = InterceptType.SeewoPincoDrawingFloating,
ProcessName = "ClassIn",
- WindowTitlePattern = "",
- ClassNamePattern = "",
+ WindowTitlePattern = "希沃品课——integration",
+ ClassNamePattern = "Chrome_WidgetWin_1",
IsEnabled = true,
RequiresAdmin = false,
- Description = "希沃品课教师端 画笔悬浮窗(包括PPT控件)"
+ Description = "希沃品课教师端 画笔悬浮窗(包括PPT控件)",
+ ParentType = InterceptType.SeewoPincoSideBarFloating,
+ ChildTypes = new List()
+ };
+
+ // 希沃品课教师端 桌面画板(子规则)
+ _interceptRules[InterceptType.SeewoPincoBoardService] = new InterceptRule
+ {
+ Type = InterceptType.SeewoPincoBoardService,
+ ProcessName = "BoardService",
+ WindowTitlePattern = "",
+ ClassNamePattern = "HwndWrapper[BoardService;;",
+ IsEnabled = true,
+ RequiresAdmin = false,
+ Description = "希沃品课教师端 桌面画板",
+ ParentType = InterceptType.SeewoPincoSideBarFloating,
+ ChildTypes = new List()
};
// 希沃PPT小工具
_interceptRules[InterceptType.SeewoPPTFloating] = new InterceptRule
{
Type = InterceptType.SeewoPPTFloating,
- ProcessName = "SeewoPPT",
+ ProcessName = "PPTService",
WindowTitlePattern = "",
- ClassNamePattern = "",
+ ClassNamePattern = "HwndWrapper[PPTService.exe;;",
IsEnabled = true,
RequiresAdmin = false,
Description = "希沃PPT小工具"
@@ -278,8 +354,8 @@ namespace Ink_Canvas.Helpers
{
Type = InterceptType.AiClassFloating,
ProcessName = "ClassIn",
- WindowTitlePattern = "",
- ClassNamePattern = "",
+ WindowTitlePattern = "TransparentWindow",
+ ClassNamePattern = "UIWndTransparent",
IsEnabled = true,
RequiresAdmin = false,
Description = "AiClass 桌面悬浮窗"
@@ -290,23 +366,147 @@ namespace Ink_Canvas.Helpers
{
Type = InterceptType.HiteAnnotationFloating,
ProcessName = "HiteVision",
- WindowTitlePattern = "",
- ClassNamePattern = "",
+ WindowTitlePattern = "HiteAnnotation",
+ ClassNamePattern = "Qt5QWindowToolSaveBits",
IsEnabled = true,
RequiresAdmin = false,
Description = "鸿合屏幕书写"
};
- // 畅言智慧课堂 桌面悬浮窗
+ // 畅言智慧课堂 主栏悬浮窗(父规则)
_interceptRules[InterceptType.ChangYanFloating] = new InterceptRule
{
Type = InterceptType.ChangYanFloating,
ProcessName = "ClassIn",
- WindowTitlePattern = "",
- ClassNamePattern = "",
+ WindowTitlePattern = "ifly",
+ ClassNamePattern = "Qt5QWindowOwnDCIcon",
IsEnabled = true,
RequiresAdmin = true,
- Description = "畅言智慧课堂 桌面悬浮窗"
+ Description = "畅言智慧课堂 主栏悬浮窗",
+ ParentType = null,
+ ChildTypes = new List
+ {
+ InterceptType.ChangYanBrushSettings,
+ InterceptType.ChangYanSwipeClear,
+ InterceptType.ChangYanInteraction,
+ InterceptType.ChangYanSubjectApp,
+ InterceptType.ChangYanControl,
+ InterceptType.ChangYanCommonTools,
+ InterceptType.ChangYanSceneToolbar,
+ InterceptType.ChangYanDrawWindow
+ }
+ };
+
+ // 畅言智慧课堂 画笔设置(子规则)
+ _interceptRules[InterceptType.ChangYanBrushSettings] = new InterceptRule
+ {
+ Type = InterceptType.ChangYanBrushSettings,
+ ProcessName = "ClassIn",
+ WindowTitlePattern = "画笔设置",
+ ClassNamePattern = "Qt5QWindowOwnDCIcon",
+ IsEnabled = true,
+ RequiresAdmin = true,
+ Description = "畅言智慧课堂 画笔设置",
+ ParentType = InterceptType.ChangYanFloating,
+ ChildTypes = new List()
+ };
+
+ // 畅言智慧课堂 滑动清除(子规则)
+ _interceptRules[InterceptType.ChangYanSwipeClear] = new InterceptRule
+ {
+ Type = InterceptType.ChangYanSwipeClear,
+ ProcessName = "ClassIn",
+ WindowTitlePattern = "滑动清除",
+ ClassNamePattern = "Qt5QWindowOwnDCIcon",
+ IsEnabled = true,
+ RequiresAdmin = true,
+ Description = "畅言智慧课堂 滑动清除",
+ ParentType = InterceptType.ChangYanFloating,
+ ChildTypes = new List()
+ };
+
+ // 畅言智慧课堂 互动(子规则)
+ _interceptRules[InterceptType.ChangYanInteraction] = new InterceptRule
+ {
+ Type = InterceptType.ChangYanInteraction,
+ ProcessName = "ClassIn",
+ WindowTitlePattern = "互动",
+ ClassNamePattern = "Qt5QWindowOwnDCIcon",
+ IsEnabled = true,
+ RequiresAdmin = true,
+ Description = "畅言智慧课堂 互动",
+ ParentType = InterceptType.ChangYanFloating,
+ ChildTypes = new List()
+ };
+
+ // 畅言智慧课堂 学科应用(子规则)
+ _interceptRules[InterceptType.ChangYanSubjectApp] = new InterceptRule
+ {
+ Type = InterceptType.ChangYanSubjectApp,
+ ProcessName = "ClassIn",
+ WindowTitlePattern = "学科应用",
+ ClassNamePattern = "Qt5QWindowOwnDCIcon",
+ IsEnabled = true,
+ RequiresAdmin = true,
+ Description = "畅言智慧课堂 学科应用",
+ ParentType = InterceptType.ChangYanFloating,
+ ChildTypes = new List()
+ };
+
+ // 畅言智慧课堂 管控(子规则)
+ _interceptRules[InterceptType.ChangYanControl] = new InterceptRule
+ {
+ Type = InterceptType.ChangYanControl,
+ ProcessName = "ClassIn",
+ WindowTitlePattern = "管控",
+ ClassNamePattern = "Qt5QWindowOwnDCIcon",
+ IsEnabled = true,
+ RequiresAdmin = true,
+ Description = "畅言智慧课堂 管控",
+ ParentType = InterceptType.ChangYanFloating,
+ ChildTypes = new List()
+ };
+
+ // 畅言智慧课堂 通用工具(子规则)
+ _interceptRules[InterceptType.ChangYanCommonTools] = new InterceptRule
+ {
+ Type = InterceptType.ChangYanCommonTools,
+ ProcessName = "ClassIn",
+ WindowTitlePattern = "通用工具",
+ ClassNamePattern = "Qt5QWindowOwnDCIcon",
+ IsEnabled = true,
+ RequiresAdmin = true,
+ Description = "畅言智慧课堂 通用工具",
+ ParentType = InterceptType.ChangYanFloating,
+ ChildTypes = new List()
+ };
+
+ // 畅言智慧课堂 场景工具栏(子规则)
+ _interceptRules[InterceptType.ChangYanSceneToolbar] = new InterceptRule
+ {
+ Type = InterceptType.ChangYanSceneToolbar,
+ ProcessName = "ClassIn",
+ WindowTitlePattern = "SceneToolbar",
+ ClassNamePattern = "Qt5QWindowOwnDCIcon",
+ IsEnabled = true,
+ RequiresAdmin = true,
+ Description = "畅言智慧课堂 场景工具栏",
+ ParentType = InterceptType.ChangYanFloating,
+ ChildTypes = new List()
+ };
+
+ // 畅言智慧课堂 绘制窗口(子规则)
+ _interceptRules[InterceptType.ChangYanDrawWindow] = new InterceptRule
+ {
+ Type = InterceptType.ChangYanDrawWindow,
+ ProcessName = "ClassIn",
+ WindowTitlePattern = "DrawWindow",
+ ClassNamePattern = "Qt5QWindowToolSaveBits",
+ IsEnabled = true,
+ RequiresAdmin = true,
+ Description = "畅言智慧课堂 绘制窗口",
+ ParentType = InterceptType.ChangYanFloating,
+ ChildTypes = new List()
};
// 畅言智慧课堂 PPT悬浮窗
@@ -314,32 +514,92 @@ namespace Ink_Canvas.Helpers
{
Type = InterceptType.ChangYanPptFloating,
ProcessName = "ClassIn",
- WindowTitlePattern = "",
- ClassNamePattern = "",
+ WindowTitlePattern = "Exch",
+ ClassNamePattern = "Qt5QWindowToolSaveBitsOwnDC",
IsEnabled = true,
RequiresAdmin = true,
- Description = "畅言智慧课堂 PPT悬浮窗"
+ Description = "畅言智慧课堂 PPT悬浮窗",
+ ParentType = null,
+ ChildTypes = new List { InterceptType.ChangYanPptPageControl, InterceptType.ChangYanPptGoBack, InterceptType.ChangYanPptPreview }
};
- // 天喻教育云互动课堂 桌面悬浮窗
+ // 畅言智慧课堂 PPT页面控制(子规则)
+ _interceptRules[InterceptType.ChangYanPptPageControl] = new InterceptRule
+ {
+ Type = InterceptType.ChangYanPptPageControl,
+ ProcessName = "ClassIn",
+ WindowTitlePattern = "PageCtl",
+ ClassNamePattern = "Qt5QWindowToolSaveBitsOwnDC",
+ IsEnabled = true,
+ RequiresAdmin = true,
+ Description = "畅言智慧课堂 PPT页面控制",
+ ParentType = InterceptType.ChangYanPptFloating,
+ ChildTypes = new List()
+ };
+
+ // 畅言智慧课堂 PPT返回(子规则)
+ _interceptRules[InterceptType.ChangYanPptGoBack] = new InterceptRule
+ {
+ Type = InterceptType.ChangYanPptGoBack,
+ ProcessName = "ClassIn",
+ WindowTitlePattern = "Goback",
+ ClassNamePattern = "Qt5QWindowToolSaveBitsOwnDC",
+ IsEnabled = true,
+ RequiresAdmin = true,
+ Description = "畅言智慧课堂 PPT返回",
+ ParentType = InterceptType.ChangYanPptFloating,
+ ChildTypes = new List()
+ };
+
+ // 畅言智慧课堂 PPT预览(子规则)
+ _interceptRules[InterceptType.ChangYanPptPreview] = new InterceptRule
+ {
+ Type = InterceptType.ChangYanPptPreview,
+ ProcessName = "ClassIn",
+ WindowTitlePattern = "Preview",
+ ClassNamePattern = "Qt5QWindowToolSaveBitsOwnDC",
+ IsEnabled = true,
+ RequiresAdmin = true,
+ Description = "畅言智慧课堂 PPT预览",
+ ParentType = InterceptType.ChangYanPptFloating,
+ ChildTypes = new List()
+ };
+
+ // 天喻教育云互动课堂 桌面悬浮窗(父规则)
_interceptRules[InterceptType.IntelligentClassFloating] = new InterceptRule
{
Type = InterceptType.IntelligentClassFloating,
- ProcessName = "ClassIn",
- WindowTitlePattern = "",
- ClassNamePattern = "",
+ ProcessName = "IntelligentClassApp",
+ WindowTitlePattern = "桌面小工具 - 互动课堂",
+ ClassNamePattern = "HwndWrapper[IntelligentClassApp.exe;;",
IsEnabled = true,
RequiresAdmin = false,
- Description = "天喻教育云互动课堂 桌面悬浮窗(包括PPT控件)"
+ Description = "天喻教育云互动课堂 桌面悬浮窗(包括PPT控件)",
+ ParentType = null,
+ ChildTypes = new List { InterceptType.IntelligentClassPptFloating }
+ };
+
+ // 天喻教育云互动课堂 PPT悬浮窗(子规则)
+ _interceptRules[InterceptType.IntelligentClassPptFloating] = new InterceptRule
+ {
+ Type = InterceptType.IntelligentClassPptFloating,
+ ProcessName = "IntelligentClass",
+ WindowTitlePattern = "",
+ ClassNamePattern = "HwndWrapper[IntelligentClass.Office.PowerPoint.vsto|vstolocal;VSTA_Main;",
+ IsEnabled = true,
+ RequiresAdmin = false,
+ Description = "天喻教育云互动课堂 PPT悬浮窗",
+ ParentType = InterceptType.IntelligentClassFloating,
+ ChildTypes = new List()
};
// 希沃桌面 画笔悬浮窗
_interceptRules[InterceptType.SeewoDesktopAnnotationFloating] = new InterceptRule
{
Type = InterceptType.SeewoDesktopAnnotationFloating,
- ProcessName = "Seewo",
+ ProcessName = "DesktopAnnotation",
WindowTitlePattern = "",
- ClassNamePattern = "",
+ ClassNamePattern = "HwndWrapper[DesktopAnnotation.exe;;",
IsEnabled = true,
RequiresAdmin = false,
Description = "希沃桌面 画笔悬浮窗"
@@ -349,9 +609,9 @@ namespace Ink_Canvas.Helpers
_interceptRules[InterceptType.SeewoDesktopSideBarFloating] = new InterceptRule
{
Type = InterceptType.SeewoDesktopSideBarFloating,
- ProcessName = "Seewo",
- WindowTitlePattern = "",
- ClassNamePattern = "",
+ ProcessName = "ResidentSideBar",
+ WindowTitlePattern = "ResidentSideBar",
+ ClassNamePattern = "HwndWrapper[ResidentSideBar.exe;;",
IsEnabled = true,
RequiresAdmin = true,
Description = "希沃桌面 侧栏悬浮窗"
@@ -395,7 +655,51 @@ namespace Ink_Canvas.Helpers
{
if (_interceptRules.ContainsKey(type))
{
- _interceptRules[type].IsEnabled = enabled;
+ var rule = _interceptRules[type];
+ rule.IsEnabled = enabled;
+
+ // 如果是父规则被禁用,则禁用所有子规则
+ if (!enabled && rule.ChildTypes.Count > 0)
+ {
+ foreach (var childType in rule.ChildTypes)
+ {
+ if (_interceptRules.ContainsKey(childType))
+ {
+ _interceptRules[childType].IsEnabled = false;
+ }
+ }
+ }
+ // 如果是父规则被启用,则启用所有子规则
+ else if (enabled && rule.ChildTypes.Count > 0)
+ {
+ foreach (var childType in rule.ChildTypes)
+ {
+ if (_interceptRules.ContainsKey(childType))
+ {
+ _interceptRules[childType].IsEnabled = true;
+ }
+ }
+ }
+ // 如果是子规则被禁用,检查是否需要禁用父规则
+ else if (!enabled && rule.ParentType.HasValue)
+ {
+ var parentRule = _interceptRules[rule.ParentType.Value];
+ // 检查是否还有其他启用的子规则
+ bool hasEnabledChildren = parentRule.ChildTypes.Any(childType =>
+ _interceptRules.ContainsKey(childType) && _interceptRules[childType].IsEnabled);
+
+ // 如果没有启用的子规则,则禁用父规则
+ if (!hasEnabledChildren)
+ {
+ parentRule.IsEnabled = false;
+ }
+ }
+ // 如果是子规则被启用,则启用父规则
+ else if (enabled && rule.ParentType.HasValue)
+ {
+ var parentRule = _interceptRules[rule.ParentType.Value];
+ parentRule.IsEnabled = true;
+ }
}
}
@@ -470,6 +774,7 @@ namespace Ink_Canvas.Helpers
try
{
+ // 使用递归枚举,包括子窗口
EnumWindows(EnumWindowsCallback, IntPtr.Zero);
}
catch (Exception ex)
@@ -483,6 +788,9 @@ namespace Ink_Canvas.Helpers
{
try
{
+ // 递归枚举子窗口
+ EnumChildWindows(hWnd, EnumWindowsCallback, lParam);
+
// 基本检查
if (!IsWindow(hWnd) || !IsWindowVisible(hWnd)) return true;
diff --git a/Ink Canvas/InkCanvasForClass.csproj b/Ink Canvas/InkCanvasForClass.csproj
index 6261f394..8dc5b359 100644
--- a/Ink Canvas/InkCanvasForClass.csproj
+++ b/Ink Canvas/InkCanvasForClass.csproj
@@ -557,6 +557,9 @@
+
+
+
diff --git a/Ink Canvas/MainWindow.xaml b/Ink Canvas/MainWindow.xaml
index 735d6df4..aafb6fc1 100644
--- a/Ink Canvas/MainWindow.xaml
+++ b/Ink Canvas/MainWindow.xaml
@@ -2893,7 +2893,7 @@
-
@@ -2907,7 +2907,7 @@
-
@@ -2921,7 +2921,7 @@
-
@@ -2935,7 +2935,7 @@
-
@@ -2949,7 +2949,7 @@
-
diff --git a/Ink Canvas/MainWindow_cs/MW_FloatingWindowInterceptor.cs b/Ink Canvas/MainWindow_cs/MW_FloatingWindowInterceptor.cs
index 5d3ae88f..c0e0fd4f 100644
--- a/Ink Canvas/MainWindow_cs/MW_FloatingWindowInterceptor.cs
+++ b/Ink Canvas/MainWindow_cs/MW_FloatingWindowInterceptor.cs
@@ -312,6 +312,37 @@ namespace Ink_Canvas
{
Settings.Automation.FloatingWindowInterceptor.InterceptRules[ruleName] = enabled;
}
+
+ // 获取规则信息以处理父子关系
+ var rule = _floatingWindowInterceptorManager?.GetInterceptRule(type);
+ if (rule != null)
+ {
+ // 如果是父规则,更新所有子规则的设置
+ if (rule.ChildTypes.Count > 0)
+ {
+ foreach (var childType in rule.ChildTypes)
+ {
+ var childRuleName = childType.ToString();
+ if (Settings.Automation.FloatingWindowInterceptor.InterceptRules.ContainsKey(childRuleName))
+ {
+ Settings.Automation.FloatingWindowInterceptor.InterceptRules[childRuleName] = enabled;
+ }
+ }
+ }
+ // 如果是子规则,更新父规则的设置
+ else if (rule.ParentType.HasValue)
+ {
+ var parentRule = _floatingWindowInterceptorManager?.GetInterceptRule(rule.ParentType.Value);
+ if (parentRule != null)
+ {
+ var parentRuleName = rule.ParentType.Value.ToString();
+ if (Settings.Automation.FloatingWindowInterceptor.InterceptRules.ContainsKey(parentRuleName))
+ {
+ Settings.Automation.FloatingWindowInterceptor.InterceptRules[parentRuleName] = parentRule.IsEnabled;
+ }
+ }
+ }
+ }
// 更新UI显示
UpdateFloatingWindowInterceptorUI();
diff --git a/Ink Canvas/Resources/Icons-png/AiClass.png b/Ink Canvas/Resources/Icons-png/AiClass.png
new file mode 100644
index 0000000000000000000000000000000000000000..502af30d2e3a32dace1a6f2a8432c175520eb941
GIT binary patch
literal 38588
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
Y|BGPuABddpmH+?%07*qoM6N<$f}fnINdN!<
literal 0
HcmV?d00001
diff --git a/Ink Canvas/Resources/Icons-png/天喻教育云.png b/Ink Canvas/Resources/Icons-png/天喻教育云.png
new file mode 100644
index 0000000000000000000000000000000000000000..c8e44e8f9f08dc0f885cd278c649a045b0115e24
GIT binary patch
literal 10739
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