Imports System.Runtime.InteropServices Imports Thiswillwork.Form1 Public Class Form1 Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load End Sub Public Enum tbpflag TBPF_NOPROGRESS TBPF_INDETERMINATE TBPF_NORMAL TBPF_ERROR TBPF_PAUSED End Enum Public Enum tbatflag TBATF_NONE = 0 TBATF_USEMDITHUMBNAIL = 1 TBATF_USEMDILIVEPREVIEW = 2 End Enum Public Structure thumbbutton Dim todo End Structure 'TODO _ Public Structure RECT Public Left As Integer Public Top As Integer Public Right As Integer Public Bottom As Integer Public Sub New(ByVal pLeft As Integer, ByVal pTop As Integer, ByVal pRight As Integer, ByVal pBottom As Integer) Left = pLeft Top = pTop Right = pRight Bottom = pBottom End Sub Public ReadOnly Property Height() As Integer Get Return Bottom - Top End Get End Property Public ReadOnly Property Width() As Integer Get Return Right - Left End Get End Property Public ReadOnly Property Location() As Point Get Return New Point(Left, Top) End Get End Property Public ReadOnly Property Size() As Size Get Return New Size(Width, Height) End Get End Property Public Function ToRectangle() As Rectangle Return Rectangle.FromLTRB(Me.Left, Me.Top, Me.Right, Me.Bottom) End Function Public Shared Function ToRectangle(ByVal sourceRect As RECT) As Rectangle Return Rectangle.FromLTRB(sourceRect.Left, sourceRect.Top, sourceRect.Right, sourceRect.Bottom) End Function Public Shared Function FromRectangle(ByVal r As Rectangle) As RECT Return New RECT(r.Left, r.Top, r.Right, r.Bottom) End Function End Structure _ Public Interface ITaskbarList ''' ''' Activates an item on the taskbar. The window is not actually activated; the window's item on the taskbar is merely displayed as active. ''' ''' A handle to the window on the taskbar to be displayed as active. Sub ActivateTab(<[In]()> ByVal hWnd As IntPtr) ''' ''' Adds an item to the taskbar. ''' ''' A handle to the window to be added to the taskbar. Sub AddTab(<[In]()> ByVal hWnd As IntPtr) ''' ''' Deletes an item from the taskbar. ''' ''' A handle to the window to be deleted from the taskbar. Sub DeleteTab(<[In]()> ByVal hWnd As IntPtr) ''' ''' Initializes the taskbar list object. This method must be called before any other ITaskbarList methods can be called. ''' Sub HrInit() ''' ''' Marks a taskbar item as active but does not visually activate it. ''' ''' A handle to the window to be marked as active. Sub SetActiveAlt(<[In]()> ByVal hWnd As IntPtr) End Interface _ Public Interface ITaskbarList2 Inherits ITaskbarList ''' ''' Marks a window as full-screen ''' ''' ''' Sub MarkFullscreenWindow(<[In]()> ByVal hWnd As IntPtr, <[In]()> ByVal fFullscreen As Integer) End Interface _ Public Interface ITaskbarList3 Inherits ITaskbarList2 ''' ''' Informs the taskbar that a new tab or document thumbnail has been provided for display in an ''' application's taskbar group flyout. ''' ''' Handle of the tab or document window. This value is required and cannot ''' be NULL. ''' 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. Sub RegisterTab(<[In]()> ByVal hWndTab As IntPtr, <[In]()> ByVal hWndMDI As IntPtr) ''' ''' Applies an overlay to a taskbar button to indicate application status or a notification to the user. ''' ''' 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. ''' 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. ''' A pointer to a string that provides an alt text version of the ''' information conveyed by the overlay, for accessibility purposes. Sub SetOverlayIcon(<[In]()> ByVal hWnd As IntPtr, <[In]()> ByVal hIcon As IntPtr, <[In]()> ByVal pszDescription As String) ''' ''' Sets the type and state of the progress indicator displayed on a taskbar button. ''' ''' 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. ''' 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. Sub SetProgressState(<[In]()> ByVal hWnd As IntPtr, ByVal tbpFlags As tbpflag) ''' ''' Displays or updates a progress bar hosted in a taskbar button to show the specific percentage ''' completed of the full operation. ''' ''' The handle of the window whose associated taskbar button is being used as ''' a progress indicator. ''' An application-defined value that indicates the proportion of the ''' operation that has been completed at the time the method is called. ''' An application-defined value that specifies the value ullCompleted will ''' have when the operation is complete. Sub SetProgressValue(<[In]()> ByVal hWnd As IntPtr, ByVal ullCompleted As ULong, ByVal ullTotal As ULong) ''' ''' Informs the taskbar that a tab or document window has been made the active window. ''' ''' 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. ''' 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. ''' 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. Sub SetTabActive(<[In]()> ByVal hWndTab As IntPtr, ByVal hWndMDI As IntPtr, ByVal tbatFlags As tbatflag) ''' ''' 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. ''' ''' 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. ''' 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. Sub SetTabOrder(<[In]()> ByVal hWndTab As IntPtr, <[In]()> ByVal hWndInsertBefore As IntPtr) ''' ''' Selects a portion of a window's client area to display as that window's thumbnail in the taskbar. ''' ''' The handle to a window represented in the taskbar. ''' 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. Sub SetThumbnailClip(<[In]()> ByVal hWnd As IntPtr, <[In]()> ByVal prcClip As RECT) ''' ''' 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. ''' ''' The handle to the window whose thumbnail displays the tooltip. This handle must ''' belong to the calling process. ''' 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. Sub SetThumbnailTooltip(<[In]()> ByVal hWnd As IntPtr, <[In]()> ByVal pszTip As String) ''' ''' Adds a thumbnail toolbar with a specified set of buttons to the thumbnail image of a window in a ''' taskbar button flyout. ''' ''' The handle of the window whose thumbnail representation will receive the toolbar. ''' This handle must belong to the calling process. ''' The number of buttons defined in the array pointed to by pButton. The maximum ''' number of buttons allowed is 7. ''' 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. Sub ThumbBarAddButtons(<[In]()> ByVal hWnd As IntPtr, <[In]()> ByVal cButtons As UInteger, <[In]()> ByVal pButton As THUMBBUTTON) ''' ''' Specifies an image list that contains button images for a toolbar embedded in a thumbnail image of a ''' window in a taskbar button flyout. ''' ''' The handle of the window whose thumbnail representation contains the toolbar to be ''' updated. This handle must belong to the calling process. ''' The handle of the image list that contains all button images to be used in the toolbar. Sub ThumbBarSetImageList(<[In]()> ByVal hWnd As IntPtr, <[In]()> ByVal himl As IntPtr) ''' ''' Removes a thumbnail from an application's preview group when that tab or document is closed in the application. ''' ''' 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. Sub UnregisterTab(<[In]()> ByVal hWndTab As IntPtr) End Interface Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click End Sub End Class