-
Notifications
You must be signed in to change notification settings - Fork 51
/
Copy pathWindowPattern.cs
157 lines (137 loc) · 5.41 KB
/
WindowPattern.cs
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
// (c) Copyright Microsoft, 2012.
// This source is subject to the Microsoft Permissive License.
// See http://www.microsoft.com/opensource/licenses.mspx#Ms-PL.
// All other rights reserved.
using System;
using System.Collections;
using System.Diagnostics;
using System.Runtime.InteropServices;
using UIAComWrapperInternal;
using UIAutomationClient = Interop.UIAutomationClient;
namespace System.Windows.Automation
{
public class WindowPattern : BasePattern
{
private UIAutomationClient.IUIAutomationWindowPattern _pattern;
public static readonly AutomationPattern Pattern = WindowPatternIdentifiers.Pattern;
public static readonly AutomationProperty CanMaximizeProperty = WindowPatternIdentifiers.CanMaximizeProperty;
public static readonly AutomationProperty CanMinimizeProperty = WindowPatternIdentifiers.CanMinimizeProperty;
public static readonly AutomationProperty IsModalProperty = WindowPatternIdentifiers.IsModalProperty;
public static readonly AutomationProperty IsTopmostProperty = WindowPatternIdentifiers.IsTopmostProperty;
public static readonly AutomationEvent WindowClosedEvent = WindowPatternIdentifiers.WindowClosedEvent;
public static readonly AutomationProperty WindowInteractionStateProperty = WindowPatternIdentifiers.WindowInteractionStateProperty;
public static readonly AutomationEvent WindowOpenedEvent = WindowPatternIdentifiers.WindowOpenedEvent;
public static readonly AutomationProperty WindowVisualStateProperty = WindowPatternIdentifiers.WindowVisualStateProperty;
private WindowPattern(AutomationElement el, UIAutomationClient.IUIAutomationWindowPattern pattern, bool cached)
: base(el, cached)
{
Debug.Assert(pattern != null);
this._pattern = pattern;
}
internal static object Wrap(AutomationElement el, object pattern, bool cached)
{
return (pattern == null) ? null : new WindowPattern(el, (UIAutomationClient.IUIAutomationWindowPattern)pattern, cached);
}
public void Close()
{
try
{
this._pattern.Close();
}
catch (System.Runtime.InteropServices.COMException e)
{
Exception newEx; if (Utility.ConvertException(e, out newEx)) { throw newEx; } else { throw; }
}
}
public void SetWindowVisualState(WindowVisualState state)
{
try
{
this._pattern.SetWindowVisualState((UIAutomationClient.WindowVisualState)state);
}
catch (System.Runtime.InteropServices.COMException e)
{
Exception newEx; if (Utility.ConvertException(e, out newEx)) { throw newEx; } else { throw; }
}
}
public bool WaitForInputIdle(int milliseconds)
{
try
{
return (0 != this._pattern.WaitForInputIdle(milliseconds));
}
catch (System.Runtime.InteropServices.COMException e)
{
Exception newEx; if (Utility.ConvertException(e, out newEx)) { throw newEx; } else { throw; }
}
}
public WindowPatternInformation Cached
{
get
{
Utility.ValidateCached(this._cached);
return new WindowPatternInformation(this._el, true);
}
}
public WindowPatternInformation Current
{
get
{
return new WindowPatternInformation(this._el, false);
}
}
[StructLayout(LayoutKind.Sequential)]
public struct WindowPatternInformation
{
private AutomationElement _el;
private bool _isCached;
internal WindowPatternInformation(AutomationElement element, bool isCached)
{
this._el = element;
this._isCached = isCached;
}
public bool CanMaximize
{
get
{
return (bool)this._el.GetPropertyValue(WindowPattern.CanMaximizeProperty, _isCached);
}
}
public bool CanMinimize
{
get
{
return (bool)this._el.GetPropertyValue(WindowPattern.CanMinimizeProperty, _isCached);
}
}
public bool IsModal
{
get
{
return (bool)this._el.GetPropertyValue(WindowPattern.IsModalProperty, _isCached);
}
}
public WindowVisualState WindowVisualState
{
get
{
return (WindowVisualState)this._el.GetPropertyValue(WindowPattern.WindowVisualStateProperty, _isCached);
}
}
public WindowInteractionState WindowInteractionState
{
get
{
return (WindowInteractionState)this._el.GetPropertyValue(WindowPattern.WindowInteractionStateProperty, _isCached);
}
}
public bool IsTopmost
{
get
{
return (bool)this._el.GetPropertyValue(WindowPattern.IsTopmostProperty, _isCached);
}
}
}
}
}