闪烁窗口不适用于 TabbedThumbnail(自定义任务栏预览)

Posted

技术标签:

【中文标题】闪烁窗口不适用于 TabbedThumbnail(自定义任务栏预览)【英文标题】:Flashing Window not working for TabbedThumbnail (custom taskbar preview) 【发布时间】:2015-08-04 15:17:30 【问题描述】:

对于我的应用程序,我使用来自 user32.dll 的 FlashWindowEx(ref FLASHWINFO pwfi) 来闪烁任务栏和我的窗口以引起注意。

此时我正在尝试为任务栏中的窗口预览添加自定义图像,我发现最好的方法是使用 WindowsAPICodePack 中的 TaskbarManager。

这没问题,但是当我调用闪烁窗口的方法时,任务栏正在闪烁,但由 TabbedThumbnail 表示的窗口不是。

使用它的程序示例是 Skype for Business(前 Lync)。为了更清楚地了解正在发生的事情以及我想要什么,我添加了一张图片和一个演示项目。

图片问题:

有没有办法将这两个功能结合在一起,就像 Skype for business 所做的那样?

图片 s4b:

演示项目的来源: http://project14.net/Dev/csharp/FlashingCustomTaskbarItem.zip

感谢您的宝贵时间!

【问题讨论】:

【参考方案1】:

我自己找到了答案。我下载了 WindowsAPICodePack 并扩展了 GlassWindow。在 WPF 中搞定一切需要一段时间。

这是一个 winForms 示例:http://www.codeproject.com/Articles/45567/Creating-a-Timer-Using-the-Amazing-New-Windows-F

可以通过向 HwndSource 添加挂钩来拦截 windows 消息。

protected override void OnSourceInitialized(EventArgs e)

    base.OnSourceInitialized(e);
    HwndSource source = PresentationSource.FromVisual(this) as HwndSource;
    source.AddHook(WndProc);


private IntPtr WndProc(IntPtr hwnd, int msg, IntPtr wParam, IntPtr lParam, 

ref bool handled)

    if(msg == (int)TaskbarNativeMethods.WM_DWMSENDICONICLIVEPREVIEWBITMAP)
    
        // get your bitmap an SetIconicThumbnail...
    

现在仍在尝试使用一些更好的功能来改进我的代码。

【讨论】:

以上是关于闪烁窗口不适用于 TabbedThumbnail(自定义任务栏预览)的主要内容,如果未能解决你的问题,请参考以下文章

为啥 JQuery keydown 适用于窗口而不适用于文本框?

通知弹出窗口不适用于单个实例

Android '无法添加窗口 -- 令牌 null 不适用于应用程序' 异常

为啥我的窗口不适用于 on_draw?

text 缩放窗口自动前进不适用于内置模板

Bootstrap 3 hidden-* 不适用于中间窗口大小