public static extern uint SHAppBarMessage(int dwMessage, out APPBARDATA pData);
public static APPBARDATA NewAPPBARDATA() { APPBARDATA abd = new APPBARDATA(); abd.cbSize = Marshal.SizeOf(typeof(APPBARDATA)); return abd; }
public static Rectangle GetTaskbarRectangle() { APPBARDATA abd = new APPBARDATA(); SHAppBarMessage((int)ABMsg.ABM_GETTASKBARPOS, out abd); return (Rectangle)abd.rc; }
public static extern IntPtr SHAppBarMessage(uint dwMessage, [In] ref APPBARDATA pData);
/// <summary> /// Method returns information about the Window's TaskBar. /// </summary> /// <param name="taskBarEdge">Location of the TaskBar(Top,Bottom,Left,Right).</param> /// <param name="height">Height of the TaskBar.</param> /// <param name="autoHide">AutoHide property of the TaskBar.</param> public static void GetTaskBarInfo(out TaskBarEdge taskBarEdge, out int height, out bool autoHide) { APPBARDATA abd = new APPBARDATA(); height = 0; taskBarEdge = TaskBarEdge.Bottom; autoHide = false; uint ret = SHAppBarMessage((int)ABMsg.ABM_GETTASKBARPOS, out abd); switch (abd.uEdge) { case (int)ABEdge.ABE_BOTTOM: taskBarEdge = TaskBarEdge.Bottom; height = abd.rc.Height; break; case (int)ABEdge.ABE_TOP: taskBarEdge = TaskBarEdge.Top; height = abd.rc.Bottom; break; case (int)ABEdge.ABE_LEFT: taskBarEdge = TaskBarEdge.Left; height = abd.rc.Width; break; case (int)ABEdge.ABE_RIGHT: taskBarEdge = TaskBarEdge.Right; height = abd.rc.Width; break; } abd = new APPBARDATA(); uint uState = SHAppBarMessage((int)ABMsg.ABM_GETSTATE, out abd); switch (uState) { case (int)ABState.ABS_ALWAYSONTOP: autoHide = false; break; case (int)ABState.ABS_AUTOHIDE: autoHide = true; break; case (int)ABState.ABS_AUTOHIDEANDONTOP: autoHide = true; break; case (int)ABState.ABS_MANUAL: autoHide = false; break; } }