@@ -7,38 +7,28 @@ namespace TaskbarHook
77 public class Taskbar : IDisposable
88 {
99 private static WinEventDelegate taskbarResizeDelegate = new WinEventDelegate ( TaskBarResizeEvent ) ;
10- private static WinEventDelegate sysPageResizeDelegate = new WinEventDelegate ( SysPageResizeEvent ) ;
1110
1211 private Taskbar ( ) { }
1312
14- internal static void CreateAndInitialize ( IntPtr taskbarHandle , IntPtr sysPageHandle )
13+ internal static void CreateAndInitialize ( IntPtr taskbarHandle )
1514 {
1615 Instance = new Taskbar ( ) ;
1716 Instance . Handle = taskbarHandle ;
18- Instance . SysPageHandle = sysPageHandle ;
1917 Instance . Rectangle = User32 . GetWindowRectangle ( Instance . Handle ) ;
20- Instance . SysPageRectangle = User32 . GetWindowRectangle ( Instance . SysPageHandle ) ;
2118 Instance . TaskbarResizeHandle = User32 . RegisterWindowSizeChangeEvent ( Instance . Handle , taskbarResizeDelegate ) ;
22- Instance . SysPageResizeHandle = User32 . RegisterWindowElementAdded ( Instance . SysPageHandle , sysPageResizeDelegate ) ;
2319 }
2420
2521 internal static Taskbar Instance { get ; private set ; }
2622
2723 public IntPtr Handle { get ; private set ; }
2824
29- private IntPtr SysPageHandle { get ; set ; }
30-
31- private IntPtr TaskbarResizeHandle { get ; set ; }
32-
33- private IntPtr SysPageResizeHandle { get ; set ; }
34-
3525 public Rectangle Rectangle { get ; private set ; }
3626
37- private Rectangle SysPageRectangle { get ; set ; }
27+ public async Task < TaskbarElement > AddToTaskbar ( ) => await AddToTaskbar ( Process . GetCurrentProcess ( ) ) ;
3828
3929 public Action SizeChanged { get ; set ; }
4030
41- public async Task < TaskbarElement > AddToTaskbar ( ) => await AddToTaskbar ( Process . GetCurrentProcess ( ) ) ;
31+ private IntPtr TaskbarResizeHandle { get ; set ; }
4232
4333 public async Task < TaskbarElement > AddToTaskbar ( Process process )
4434 {
@@ -53,29 +43,14 @@ public async Task<TaskbarElement> AddToTaskbar(Process process)
5343
5444 private static void TaskBarResizeEvent ( IntPtr hWinEventHook , uint eventType , IntPtr hwnd , int idObject , int idChild , uint dwEventThread , uint dwmsEventTime )
5545 {
56- Instance . Rectangle = User32 . GetWindowRectangle ( Instance . Handle ) ;
57- Instance ? . SizeChanged ? . Invoke ( ) ;
58- }
59-
60- private static void SysPageResizeEvent ( IntPtr hWinEventHook , uint eventType , IntPtr hwnd , int idObject , int idChild , uint dwEventThread , uint dwmsEventTime )
61- {
62- var currentIconTrayRectangle = User32 . GetWindowRectangle ( Instance . SysPageHandle ) ;
63- int width = currentIconTrayRectangle . Right - currentIconTrayRectangle . Left ;
64- int height = currentIconTrayRectangle . Bottom - currentIconTrayRectangle . Top ;
65- int cwidth = Instance . SysPageRectangle . Right - Instance . SysPageRectangle . Left ;
66- int cheight = Instance . SysPageRectangle . Bottom - Instance . SysPageRectangle . Top ;
46+ var currentRectangle = User32 . GetWindowRectangle ( Instance . Handle ) ;
47+ if ( currentRectangle . Equals ( Instance . Rectangle ) )
48+ return ;
6749
68- if ( width != cwidth || height != cheight )
69- {
70- Instance . SysPageRectangle = currentIconTrayRectangle ;
71- TaskBarResizeEvent ( hWinEventHook , eventType , hwnd , idObject , idChild , dwEventThread , dwmsEventTime ) ;
72- }
50+ Instance . Rectangle = currentRectangle ;
51+ Instance ? . SizeChanged ? . Invoke ( ) ;
7352 }
7453
75- public void Dispose ( )
76- {
77- User32 . UnRegisterWindowSizeChangeEvent ( TaskbarResizeHandle ) ;
78- User32 . UnRegisterWindowSizeChangeEvent ( SysPageResizeHandle ) ;
79- }
54+ public void Dispose ( ) => User32 . UnRegisterWindowSizeChangeEvent ( TaskbarResizeHandle ) ;
8055 }
8156}
0 commit comments