Files
community/Ink Canvas/Helpers/WinTabWindowsChecker.cs
T

85 lines
3.6 KiB
C#
Raw Normal View History

2025-05-25 09:29:48 +08:00
using System.Windows.Automation;
2025-08-03 16:46:33 +08:00
namespace Ink_Canvas.Helpers
{
internal class WinTabWindowsChecker
{
2025-05-25 09:29:48 +08:00
/*
public static bool IsWindowMinimized(string windowName, bool matchFullName = true) {
// 获取Win+Tab预览中的窗口
AutomationElementCollection windows = AutomationElement.RootElement.FindAll(
TreeScope.Children, new PropertyCondition(AutomationElement.ControlTypeProperty, ControlType.Window));
foreach (AutomationElement window in windows) {
//LogHelper.WriteLogToFile("" + window.Current.Name);
string windowTitle = window.Current.Name;
// 如果窗口标题包含 windowName,则进行检查
if (!string.IsNullOrEmpty(windowTitle) && windowTitle.Contains(windowName)) {
if (matchFullName) {
if (windowTitle.Length == windowName.Length) {
// 检查窗口是否最小化
WindowPattern windowPattern = window.GetCurrentPattern(WindowPattern.Pattern) as WindowPattern;
if (windowPattern != null) {
bool isMinimized = windowPattern.Current.WindowVisualState == WindowVisualState.Minimized;
//LogHelper.WriteLogToFile("" + windowTitle + isMinimized);
return isMinimized;
}
}
} else {
// 检查窗口是否最小化
WindowPattern windowPattern = window.GetCurrentPattern(WindowPattern.Pattern) as WindowPattern;
if (windowPattern != null) {
bool isMinimized = windowPattern.Current.WindowVisualState == WindowVisualState.Minimized;
return isMinimized;
}
}
}
}
// 未找到软件白板窗口
return true;
}
*/
2025-08-03 16:46:33 +08:00
public static bool IsWindowExisted(string windowName, bool matchFullName = true)
{
2025-05-25 09:29:48 +08:00
// 获取Win+Tab预览中的窗口
AutomationElementCollection windows = AutomationElement.RootElement.FindAll(
TreeScope.Children, new PropertyCondition(AutomationElement.ControlTypeProperty, ControlType.Window));
2025-08-03 16:46:33 +08:00
foreach (AutomationElement window in windows)
{
2025-05-25 09:29:48 +08:00
//LogHelper.WriteLogToFile("" + window.Current.Name);
string windowTitle = window.Current.Name;
// 如果窗口标题包含 windowName,则进行检查
2025-08-03 16:46:33 +08:00
if (!string.IsNullOrEmpty(windowTitle) && windowTitle.Contains(windowName))
{
if (matchFullName)
{
if (windowTitle.Length == windowName.Length)
{
2025-09-30 19:15:03 +08:00
WindowPattern windowPattern = window.GetCurrentPattern(WindowPattern.Pattern) as WindowPattern;
if (windowPattern != null)
2025-08-03 16:46:33 +08:00
{
2025-05-25 09:29:48 +08:00
return true;
}
}
2025-08-03 16:46:33 +08:00
}
else
{
2025-09-30 19:15:03 +08:00
WindowPattern windowPattern = window.GetCurrentPattern(WindowPattern.Pattern) as WindowPattern;
if (windowPattern != null)
2025-08-03 16:46:33 +08:00
{
2025-05-25 09:29:48 +08:00
return true;
}
}
}
}
return false;
}
}
}