77
88namespace MathCore . WPF . Taskbar ;
99
10+ /// <summary>Предоставляет функциональность для работы с панелью задач Windows</summary>
11+ /// <remarks>
12+ /// Класс позволяет получить информацию о состоянии, размерах и положении панели задач,
13+ /// а также управлять её видимостью. Все члены класса статические.
14+ /// </remarks>
15+ /// <example>
16+ /// <code language="csharp"><![CDATA[
17+ /// // Получение информации о панели задач
18+ /// var position = Taskbar.Position;
19+ /// var bounds = Taskbar.CurrentBounds;
20+ /// var autoHide = Taskbar.AutoHide;
21+ ///
22+ /// Console.WriteLine($"Положение: {position}");
23+ /// Console.WriteLine($"Границы: {bounds}");
24+ /// Console.WriteLine($"Автоскрытие: {autoHide}");
25+ ///
26+ /// // Управление видимостью
27+ /// Taskbar.Hide(); // Скрыть панель задач
28+ /// System.Threading.Thread.Sleep(3000);
29+ /// Taskbar.Show(); // Показать панель задач
30+ /// ]]></code>
31+ /// </example>
1032[ Copyright ( "franzalex" , url = "https://gist.github.com/franzalex/e747e6b318ab8f328aa02301f25ec534" ) ]
1133public static class Taskbar
1234{
@@ -22,13 +44,21 @@ private enum ABS
2244 /// <summary>Статический инициализатор класса <see cref="Taskbar" /></summary>
2345 static Taskbar ( ) => _AppBarData = new ( )
2446 {
25- cbSize = ( uint ) Marshal . SizeOf ( typeof ( AppBarData ) ) ,
47+ cbSize = ( uint ) Marshal . SizeOf < AppBarData > ( ) ,
2648 hWnd = User32 . FindWindow ( ClassName , null )
2749 } ;
2850
2951 /// <summary>Возвращает значение, указывающее, что панель задач всегда поверх других окон</summary>
3052 /// <value><c>true</c>, если панель задач всегда поверх других окон; иначе <c>false</c></value>
3153 /// <remarks>Это свойство всегда возвращает <c>false</c> в Windows 7 и новее</remarks>
54+ /// <example>
55+ /// <code language="csharp"><![CDATA[
56+ /// if (Taskbar.AlwaysOnTop)
57+ /// {
58+ /// Console.WriteLine("Панель задач всегда отображается поверх других окон");
59+ /// }
60+ /// ]]></code>
61+ /// </example>
3262 public static bool AlwaysOnTop
3363 {
3464 get
@@ -40,6 +70,14 @@ public static bool AlwaysOnTop
4070
4171 /// <summary>Возвращает значение, указывающее, что панель задач автоматически скрывается при неактивности</summary>
4272 /// <value><c>true</c>, если включено автоскрытие панели задач; иначе <c>false</c></value>
73+ /// <example>
74+ /// <code language="csharp"><![CDATA[
75+ /// if (Taskbar.AutoHide)
76+ /// {
77+ /// Console.WriteLine("Панель задач автоматически скрывается");
78+ /// }
79+ /// ]]></code>
80+ /// </example>
4381 public static bool AutoHide
4482 {
4583 get
@@ -50,6 +88,13 @@ public static bool AutoHide
5088 }
5189
5290 /// <summary>Возвращает текущие границы отображения панели задач</summary>
91+ /// <value>Прямоугольник, представляющий текущие границы панели задач, или <see cref="Rectangle.Empty"/> при ошибке</value>
92+ /// <example>
93+ /// <code language="csharp"><![CDATA[
94+ /// Rectangle bounds = Taskbar.CurrentBounds;
95+ /// Console.WriteLine($"Ширина: {bounds.Width}, Высота: {bounds.Height}");
96+ /// ]]></code>
97+ /// </example>
5398 public static Rectangle CurrentBounds
5499 {
55100 get
@@ -62,6 +107,13 @@ public static Rectangle CurrentBounds
62107 }
63108
64109 /// <summary>Возвращает границы отображения при полностью видимой панели задач</summary>
110+ /// <value>Прямоугольник, представляющий границы видимой панели задач</value>
111+ /// <example>
112+ /// <code language="csharp"><![CDATA[
113+ /// Rectangle displayBounds = Taskbar.DisplayBounds;
114+ /// Console.WriteLine($"Панель задач расположена в пределах: {displayBounds}");
115+ /// ]]></code>
116+ /// </example>
65117 public static Rectangle DisplayBounds =>
66118 RefreshBoundsAndPosition ( )
67119 ? Rectangle . FromLTRB (
@@ -72,20 +124,50 @@ public static Rectangle CurrentBounds
72124 : CurrentBounds ;
73125
74126 /// <summary>Возвращает дескриптор окна панели задач</summary>
127+ /// <value>Дескриптор окна (IntPtr) панели задач</value>
128+ /// <example>
129+ /// <code language="csharp"><![CDATA[
130+ /// IntPtr hWnd = Taskbar.Handle;
131+ /// if (hWnd != IntPtr.Zero)
132+ /// {
133+ /// Console.WriteLine("Панель задач найдена");
134+ /// }
135+ /// ]]></code>
136+ /// </example>
75137 public static IntPtr Handle => _AppBarData . hWnd ;
76138
77139 /// <summary>Возвращает положение панели задач на экране</summary>
140+ /// <value>Перечисление <see cref="TaskbarPosition"/>, указывающее положение панели</value>
141+ /// <example>
142+ /// <code language="csharp"><![CDATA[
143+ /// TaskbarPosition position = Taskbar.Position;
144+ /// Console.WriteLine($"Панель задач расположена: {position}");
145+ /// ]]></code>
146+ /// </example>
78147 public static TaskbarPosition Position => RefreshBoundsAndPosition ( )
79148 ? ( TaskbarPosition ) _AppBarData . uEdge
80149 : TaskbarPosition . Unknown ;
81150
82151 private const int SW_HIDE = 0 ;
152+
83153 /// <summary>Скрывает панель задач</summary>
154+ /// <example>
155+ /// <code language="csharp"><![CDATA[
156+ /// Taskbar.Hide();
157+ /// Console.WriteLine("Панель задач скрыта");
158+ /// ]]></code>
159+ /// </example>
84160 public static void Hide ( ) => _ = User32 . ShowWindow ( Handle , SW_HIDE ) ;
85161
86162 private const int SW_SHOW = 1 ;
87163
88164 /// <summary>Показывает панель задач</summary>
165+ /// <example>
166+ /// <code language="csharp"><![CDATA[
167+ /// Taskbar.Show();
168+ /// Console.WriteLine("Панель задач отображается");
169+ /// ]]></code>
170+ /// </example>
89171 public static void Show ( ) => _ = User32 . ShowWindow ( Handle , SW_SHOW ) ;
90172
91173 private static bool RefreshBoundsAndPosition ( ) =>
0 commit comments