public override void Refresh() { var data = new ApplicationBarData { cbSize = (uint)Marshal.SizeOf(typeof(ApplicationBarData)), hWnd = this.TaskBarHandle }; var result = TaskBarWin32.SHAppBarMessage(ApplicationBarCommand.GetTaskbarPos, ref data); if (result == IntPtr.Zero) { throw new InvalidOperationException(); } this.Position = (TaskBarPosition)data.uEdge; this.Bounds = Rectangle.FromLTRB(data.rc.Left, data.rc.Top, data.rc.Right, data.rc.Bottom); data.cbSize = (uint)Marshal.SizeOf(typeof(ApplicationBarData)); result = TaskBarWin32.SHAppBarMessage(ApplicationBarCommand.GetState, ref data); var state = result.ToInt32(); this.AlwaysOnTop = (state & ApplicationBarState.AlwaysOnTop) == ApplicationBarState.AlwaysOnTop; this.AutoHide = (state & ApplicationBarState.Autohide) == ApplicationBarState.Autohide; }
internal static extern IntPtr SHAppBarMessage(ApplicationBarCommand dwMessage, [In] ref ApplicationBarData pData);