Nun, auf jeden Fall, ja, Sie können es tun, aber der Code, den Sie bereitgestellt haben, fehlen von notwendigen Details von wer und wie es um sein Verhalten zu wickeln, weil nicht das gleiche ist, wenn Sie vollen Zugriff haben an den Quellcode, um erforderliche Änderungen durchzuführen oder nicht, Es ist nicht klar, ob es sich um eine VB.NET-Übersetzung des offiziellen WindowsAPICodePack
C# -Codes handelt, oder um einen benutzerdefinierten Wrapper von einer anderen Person.
Anyways, der Code, den Sie, particullary der TaskbarManager.Instance
Mitglied haben kann, sollte eine der ITaskbarList Schnittstellen implementieren, probablly ITaskbarList4 (alle), und das bedeutet, sollten Sie in der Lage sein, die Hülle zu überarbeiten die ITaskbarList::SetProgressValue anrufen Methode, die den Zielfensterpunkt Ihres Dialogfelds übergibt.
aus irgendeinem Grund Wenn Sie die ITaskbarList
Definition brauchen könnte, übersetzte ich es an der Zeit her zu VB.NET (ohne Berücksichtigung einige genannten Methoden als „Fake“, die ich wollte nicht verwenden)
''' <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
Additionaly diese Aufzählung:
''' <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
Solange der Dialog einen Griff hat (es tut) und die Taskleiste Präsenz (wahrscheinlich der Fall ist, aber nicht _have_ nicht), ich glaube nicht, Windows-kümmert. – RoyalPotato
Danke, das sind gute Nachrichten. Die Dialogbox hat die Eigenschaft ShowInTaskbar = True und ihre eigene Taskleistenpräsenz. Aber wie füttere ich das Handle der entsprechenden Dialogbox mit dem TaskbarManager? Ich vermisse etwas. –
Verwenden Sie das WindowsAPICodePack? – RoyalPotato