首页 > 解决方案 > 即使表单最小化如何刷新任务栏预览

问题描述

我遇到了问题,我注意到 90% 的 Windows(7,8,10) 应用程序不会更新任务栏预览(当您将鼠标悬停在任务栏中的应用程序图标上时的那个小窗口)所以当应用程序最小化时任务栏预览只是冻结而不更新,除了一些应用程序即使在最小化时也会更新它(例如 Windows Media Player、Music Bee)。我尝试自己使用WindowsAPICodePack并裁剪任务栏预览来解决此问题,并且我还使用了第二种形式并将其设置Opacity为 0,但它不起作用。我现在没有要显示的代码。

标签: .netvb.nettaskbarwindows-media-playerwindows-api-code-pack

解决方案


要以编程方式刷新任务栏预览并使用自定义位图:

    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 示例的所有部分


推荐阅读