ITaskbarList3
C# Signature:
/// <summary>
/// Extends ITaskbarList2 by exposing methods that support the unified launching and switching taskbar button
/// functionality added in Windows 7. This functionality includes thumbnail representations and switch
/// targets based on individual tabs in a tabbed application, thumbnail toolbars, notification and
/// status overlays, and progress indicators.
/// </summary>
[ComImport,
Guid("ea1afb91-9e28-4b86-90e9-9e9f8a5eefaf"),
InterfaceType(ComInterfaceType.InterfaceIsIUnknown)]
public interface ITaskbarList3
{
// ITaskbarList
/// <summary>
/// Initializes the taskbar list object. This method must be called before any other ITaskbarList methods can be called.
/// </summary>
void HrInit();
/// <summary>
/// Adds an item to the taskbar.
/// </summary>
/// <param name="hWnd">A handle to the window to be added to the taskbar.</param>
void AddTab(IntPtr hWnd);
/// <summary>
/// Deletes an item from the taskbar.
/// </summary>
/// <param name="hWnd">A handle to the window to be deleted from the taskbar.</param>
void DeleteTab(IntPtr hWnd);
/// <summary>
/// Activates an item on the taskbar. The window is not actually activated; the window's item on the taskbar is merely displayed as active.
/// </summary>
/// <param name="hWnd">A handle to the window on the taskbar to be displayed as active.</param>
void ActivateTab(IntPtr hWnd);
/// <summary>
/// Marks a taskbar item as active but does not visually activate it.
/// </summary>
/// <param name="hWnd">A handle to the window to be marked as active.</param>
void SetActiveAlt(IntPtr hWnd);
// ITaskbarList2
/// <summary>
/// Marks a window as full-screen
/// </summary>
/// <param name="hWnd"></param>
/// <param name="fFullscreen"></param>
void MarkFullscreenWindow(IntPtr hWnd, int fFullscreen);
/// <summary>
/// Displays or updates a progress bar hosted in a taskbar button to show the specific percentage
/// completed of the full operation.
/// </summary>
/// <param name="hWnd">The handle of the window whose associated taskbar button is being used as
/// a progress indicator.</param>
/// <param name="ullCompleted">An application-defined value that indicates the proportion of the
/// operation that has been completed at the time the method is called.</param>
/// <param name="ullTotal">An application-defined value that specifies the value ullCompleted will
/// have when the operation is complete.</param>
void SetProgressValue(IntPtr hWnd, ulong ullCompleted, ulong ullTotal);
/// <summary>
/// Sets the type and state of the progress indicator displayed on a taskbar button.
/// </summary>
/// <param name="hWnd">The handle of the window in which the progress of an operation is being
/// shown. This window's associated taskbar button will display the progress bar.</param>
/// <param name="tbpFlags">Flags that control the current state of the progress button. Specify
/// only one of the following flags; all states are mutually exclusive of all others.</param>
void SetProgressState(IntPtr hWnd, TBPFLAG tbpFlags);
/// <summary>
/// Informs the taskbar that a new tab or document thumbnail has been provided for display in an
/// application's taskbar group flyout.
/// </summary>
/// <param name="hWndTab">Handle of the tab or document window. This value is required and cannot
/// be NULL.</param>
/// <param name="hWndMDI">Handle of the application's main window. This value tells the taskbar
/// which application's preview group to attach the new thumbnail to. This value is required and
/// cannot be NULL.</param>
void RegisterTab(IntPtr hWndTab, IntPtr hWndMDI);
/// <summary>
/// Removes a thumbnail from an application's preview group when that tab or document is closed in the application.
/// </summary>
/// <param name="hWndTab">The handle of the tab window whose thumbnail is being removed. This is the same
/// value with which the thumbnail was registered as part the group through ITaskbarList3::RegisterTab.
/// This value is required and cannot be NULL.</param>
void UnregisterTab(IntPtr hWndTab);
/// <summary>
/// Inserts a new thumbnail into a tabbed-document interface (TDI) or multiple-document interface
/// (MDI) application's group flyout or moves an existing thumbnail to a new position in the
/// application's group.
/// </summary>
/// <param name="hWndTab">The handle of the tab window whose thumbnail is being placed. This value
/// is required, must already be registered through ITaskbarList3::RegisterTab, and cannot be NULL.</param>
/// <param name="hWndInsertBefore">The handle of the tab window whose thumbnail that hwndTab is
/// inserted to the left of. This handle must already be registered through ITaskbarList3::RegisterTab.
/// If this value is NULL, the new thumbnail is added to the end of the list.</param>
void SetTabOrder(IntPtr hWndTab, IntPtr hWndInsertBefore);
/// <summary>
/// Informs the taskbar that a tab or document window has been made the active window.
/// </summary>
/// <param name="hWndTab">Handle of the active tab window. This handle must already be registered
/// through ITaskbarList3::RegisterTab. This value can be NULL if no tab is active.</param>
/// <param name="hWndMDI">Handle of the application's main window. This value tells the taskbar
/// which group the thumbnail is a member of. This value is required and cannot be NULL.</param>
/// <param name="tbatFlags">None, one, or both of the following values that specify a thumbnail
/// and peek view to use in place of a representation of the specific tab or document.</param>
void SetTabActive(IntPtr hWndTab, IntPtr hWndMDI, UInt32 tbatFlags);
/// <summary>
/// Adds a thumbnail toolbar with a specified set of buttons to the thumbnail image of a window in a
/// taskbar button flyout.
/// </summary>
/// <param name="hWnd">The handle of the window whose thumbnail representation will receive the toolbar.
/// This handle must belong to the calling process.</param>
/// <param name="cButtons">The number of buttons defined in the array pointed to by pButton. The maximum
/// number of buttons allowed is 7.</param>
/// <param name="pButton">A pointer to an array of THUMBBUTTON structures. Each THUMBBUTTON defines an
/// individual button to be added to the toolbar. Buttons cannot be added or deleted later, so this must
/// be the full defined set. Buttons also cannot be reordered, so their order in the array, which is the
/// order in which they are displayed left to right, will be their permanent order.</param>
void ThumbBarAddButtons(
IntPtr hWnd,
uint cButtons,
[MarshalAs(UnmanagedType.LPArray)] THUMBBUTTON[] pButton);
void ThumbBarUpdateButtons(
IntPtr hWnd,
uint cButtons,
[MarshalAs(UnmanagedType.LPArray)] THUMBBUTTON[] pButton);
/// <summary>
/// Specifies an image list that contains button images for a toolbar embedded in a thumbnail image of a
/// window in a taskbar button flyout.
/// </summary>
/// <param name="hWnd">The handle of the window whose thumbnail representation contains the toolbar to be
/// updated. This handle must belong to the calling process.</param>
/// <param name="himl">The handle of the image list that contains all button images to be used in the toolbar.</param>
void ThumbBarSetImageList(IntPtr hWnd, IntPtr himl);
/// <summary>
/// Applies an overlay to a taskbar button to indicate application status or a notification to the user.
/// </summary>
/// <param name="hWnd">The handle of the window whose associated taskbar button receives the overlay.
/// This handle must belong to a calling process associated with the button's application and must be
/// a valid HWND or the call is ignored.</param>
/// <param name="hIcon">The handle of an icon to use as the overlay. This should be a small icon,
/// measuring 16x16 pixels at 96 dots per inch (dpi). If an overlay icon is already applied to the
/// taskbar button, that existing overlay is replaced.</param>
/// <param name="pszDescription">A pointer to a string that provides an alt text version of the
/// information conveyed by the overlay, for accessibility purposes.</param>
void SetOverlayIcon(IntPtr hWnd, IntPtr hIcon, string pszDescription);
/// <summary>
/// Specifies or updates the text of the tooltip that is displayed when the mouse pointer rests on an
/// individual preview thumbnail in a taskbar button flyout.
/// </summary>
/// <param name="hWnd">The handle to the window whose thumbnail displays the tooltip. This handle must
/// belong to the calling process.</param>
/// <param name="pszTip">The pointer to the text to be displayed in the tooltip. This value can be NULL,
/// in which case the title of the window specified by hwnd is used as the tooltip.</param>
void SetThumbnailTooltip(IntPtr hWnd, string pszTip);
/// <summary>
/// Selects a portion of a window's client area to display as that window's thumbnail in the taskbar.
/// </summary>
/// <param name="hWnd">The handle to a window represented in the taskbar.</param>
/// <param name="prcClip">A pointer to a RECT structure that specifies a selection within the window's
/// client area, relative to the upper-left corner of that client area. To clear a clip that is already
/// in place and return to the default display of the thumbnail, set this parameter to NULL.</param>
void SetThumbnailClip(IntPtr hWnd, IntPtr prcClip);
VB Signature:
Declare Function ITaskbarList3 Lib "shell32.dll" (TODO) As TODO
User-Defined Types:
THB_BITMAP = 0x1,
THB_ICON = 0x2,
THB_TOOLTIP = 0x4,
THB_FLAGS = 0x8
}
User-Defined Types:
THUMBBUTTONMASK dwMask;
UINT iId;
UINT iBitmap;
HICON hIcon;
[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 260)]
public string szTip;
THUMBBUTTONFLAGS dwFlags;
}
User-Defined Types:
THBF_ENABLED = 0,
THBF_DISABLED = 0x1,
THBF_DISMISSONCLICK = 0x2,
THBF_NOBACKGROUND = 0x4,
THBF_HIDDEN = 0x8,
THBF_NONINTERACTIVE = 0x10
}
User-Defined Types:
TBPF_NOPROGRESS = 0,
TBPF_INDETERMINATE = 0x1,
TBPF_NORMAL = 0x2,
TBPF_ERROR = 0x4,
TBPF_PAUSED = 0x8
}
User-Defined Types:
Int32 left;
Int32 top;
Int32 right;
Int32 bottom;
}
Última actualización