public Taskbar() { IntPtr taskbarHandle = WinApi.FindWindow(Taskbar.ClassName, null); WinApi.APPBARDATA data = new WinApi.APPBARDATA(); data.cbSize = (uint)Marshal.SizeOf(typeof(WinApi.APPBARDATA)); data.hWnd = taskbarHandle; IntPtr result = WinApi.SHAppBarMessage(WinApi.ABM.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(WinApi.APPBARDATA)); result = WinApi.SHAppBarMessage(WinApi.ABM.GetState, ref data); int state = result.ToInt32(); this.AlwaysOnTop = (state & WinApi.AlwaysOnTop) == WinApi.AlwaysOnTop; this.AutoHide = (state & WinApi.Autohide) == WinApi.Autohide; }