У меня проблема, и я заметил, что 90% приложений Windows (7,8,10) не обновляют предварительный просмотр панели задач (это маленькое окно, когда вы наводите курсор на значок приложения на панели задач), поэтому, когда приложение свернуто, предварительный просмотр панели задач просто зависает и не обновляется, кроме того, некоторые приложения обновляют его даже в свернутом виде (например, Windows Media Player, Music Bee). Я попытался решить эту проблему самостоятельно, используя WindowsAPICodePack
и обрезав предварительный просмотр панели задач, а также использовал вторую форму и установил Opacity
на 0, но это не сработало. У меня нет никакого кода, чтобы показать прямо сейчас.
Как обновить предварительный просмотр панели задач, даже если форма свернута
comment
TaskbarItemInfo или DwmRegisterThumbnail + DwmUpdateThumbnailProperties + DwmQueryThumbnailSourceSize + отмените регистрацию всего этого.
- person Jimi   schedule 05.07.2020
comment
@Jimi Прошел час, и я пытаюсь использовать DWMAPI.dll, но мне не повезло, я нашел код из этого сообщения на SO (C#, но я преобразовал его) link это просто не сработает, я пробовал все, чтобы сделать это работает, поправьте меня, если я ошибаюсь. «dest» — это дескриптор моего приложения, «src» — это приложение, которое я пытаюсь показать, «thumb» — целое число для обновления миниатюры. «DwmRegisterThumbnail» возвращает -2147024809, src — это 0,Thumb тоже 0 , вот мой код pastebin.com/zGFjbQAu , ссылка pastebin.com/5KwEd1SE
- person Anes Hamdani   schedule 05.07.2020
Ответы (1)
Чтобы программно обновить предварительный просмотр панели задач и использовать пользовательские растровые изображения:
Imports System
Imports System.Drawing
Imports System.Threading
Imports System.Windows.Forms
Imports Microsoft.WindowsAPICodePack.Taskbar
Namespace CustomThumbnailImage
Public Partial Class Form1
Inherits Form
Private customThumbnail As TabbedThumbnail
Public Sub New()
InitializeComponent()
End Sub
Protected Overrides Sub OnShown(ByVal e As EventArgs)
MyBase.OnShown(e)
customThumbnail = New TabbedThumbnail(Me.Handle, Me.Handle)
TaskbarManager.Instance.TabbedThumbnail.AddThumbnailPreview(customThumbnail)
customThumbnail.TabbedThumbnailBitmapRequested += AddressOf customThumbnail_TabbedThumbnailBitmapRequested
End Sub
Private Function GenerateBitmap() As Bitmap
Dim bitmap As Bitmap = New Bitmap(150, 150)
Using g = Graphics.FromImage(bitmap)
Dim random = New Random(Environment.TickCount)
Using brush = New SolidBrush(Color.FromArgb(255, random.[Next](255), random.[Next](255), random.[Next](255)))
g.FillEllipse(brush, 10, 30, 130, 90)
End Using
End Using
Return bitmap
End Function
Private Sub customThumbnail_TabbedThumbnailBitmapRequested(ByVal sender As Object, ByVal e As TabbedThumbnailBitmapRequestedEventArgs)
Dim bitmap = GenerateBitmap()
customThumbnail.SetImage(bitmap)
ThreadPool.QueueUserWorkItem(Sub(c)
Thread.Sleep(2000)
Me.Invoke(New MethodInvoker(AddressOf InvalidateThumbnail))
End Sub)
End Sub
Private Sub InvalidateThumbnail()
customThumbnail.InvalidatePreview()
End Sub
End Class
End Namespace
Все части образцов Win7Api
person
Anes Hamdani
schedule
06.09.2020