好吧,无论如何,是的,您可以这样做,但是您提供的代码缺乏必要的细节,说明谁以及如何包装它以了解它的行为,因为如果您拥有完全访问权限,那就不一样了源代码进行任何必要的修改,不清楚是官方WindowsAPICodePack C#代码的VB.NET翻译,还是其他人自定义的包装器。
无论如何,您可以拥有的代码,特别是 TaskbarManager.Instance 成员应该实现 ITaskbarList 接口之一,可能是 ITaskbarList4(全部),并且这意味着您应该能够重新设计包装器以调用 ITaskbarList::SetProgressValue 方法并传递对话框的目标窗口句柄。
如果由于某种原因您可能需要 ITaskbarList 定义,我之前将其翻译为 VB.NET(忽略了一些我不想使用的名为“Fake”的方法)
''' <remarks>
''' <see href="http://msdn.microsoft.com/en-us/library/windows/desktop/dd562040(v=vs.85).aspx"/>
''' </remarks>
<ComImport>
<InterfaceType(ComInterfaceType.InterfaceIsIUnknown)>
<Guid("C43DC798-95D1-4BEA-9030-BB99E2983A1A")>
Public Interface ITaskbarList4
#Region " ITaskbarList "
<PreserveSig>
Sub HrInit()
<PreserveSig>
Sub AddTab(ByVal hwnd As IntPtr)
<PreserveSig>
Sub DeleteTab(ByVal hwnd As IntPtr)
<PreserveSig>
Sub ActivateTab(ByVal hwnd As IntPtr)
<PreserveSig>
Sub SetActiveAlt(ByVal hwnd As IntPtr)
#End Region
#Region " ITaskbarList2 "
<PreserveSig>
Sub MarkFullscreenWindow(ByVal hwnd As IntPtr, <MarshalAs(UnmanagedType.Bool)> ByVal fFullscreen As Boolean)
#End Region
#Region " ITaskbarList3 "
<PreserveSig>
Sub SetProgressValue(ByVal hwnd As IntPtr, ByVal ullCompleted As UInt64, ByVal ullTotal As UInt64)
<PreserveSig>
Sub SetProgressState(ByVal hwnd As IntPtr, ByVal tbpFlags As TaskbarProgressBarState)
<PreserveSig>
Sub RegisterTab(ByVal hwndTab As IntPtr, ByVal hwndMdi As IntPtr)
<PreserveSig>
Sub UnregisterTab(ByVal hwndTab As IntPtr)
<PreserveSig>
Sub SetTabOrder(ByVal hwndTab As IntPtr, ByVal hwndInsertBefore As IntPtr)
<PreserveSig>
Sub SetTabActive(ByVal hwndTab As IntPtr, ByVal hwndInsertBefore As IntPtr, ByVal dwReserved As UInteger)
<PreserveSig>
Function Fake1() As HResult
' Function ThumbBarAddButtons(byval hwnd As IntPtr, byval cButtons As UInteger, <MarshalAs(UnmanagedType.LPArray)> byval pButtons As ThumbButton()) As HResult
<PreserveSig>
Function Fake2() As HResult
' Function ThumbBarUpdateButtons(byval hwnd As IntPtr, byval cButtons As UInteger, <MarshalAs(UnmanagedType.LPArray)> byval pButtons As ThumbButton()) As HResult
<PreserveSig>
Sub Fake3()
' Sub ThumbBarSetImageList(byval hwnd As IntPtr, byval himl As IntPtr)
<PreserveSig>
Sub SetOverlayIcon(ByVal hwnd As IntPtr, ByVal hIcon As IntPtr, <MarshalAs(UnmanagedType.LPWStr)> ByVal pszDescription As String)
<PreserveSig>
Sub SetThumbnailTooltip(ByVal hwnd As IntPtr, <MarshalAs(UnmanagedType.LPWStr)> ByVal pszTip As String)
<PreserveSig>
Sub SetThumbnailClip(ByVal hwnd As IntPtr, ByVal prcClip As IntPtr)
#End Region
#Region " ITaskbarList4 "
Sub Fake4()
' Sub SetTabProperties(byval hwndTab As IntPtr, byval stpFlags As SetTabPropertiesOption)
#End Region
End Interface
另外这个枚举:
''' <remarks>
''' <see href="http://msdn.microsoft.com/en-us/library/windows/desktop/dd391697%28v=vs.85%29.aspx"/>
''' </remarks>
Public Enum TaskbarProgressBarState
NoProgress = 0
Indeterminate = &H1
Normal = &H2
[Error] = &H4
Paused = &H8
End Enum