WPF中的图标闪烁功能

代码示例

cs 复制代码
using System.Runtime.InteropServices;
using System.Windows.Interop;
using System.Windows;


namespace AutoFeed.ViewModel
{
    // 用于存储窗口闪烁信息的结构体
    [StructLayout(LayoutKind.Sequential)]
    public struct FLASHWINFO
    {
        public uint cbSize;         // 结构体大小
        public IntPtr hwnd;         // 窗口句柄
        public uint dwFlags;        // 闪烁标志
        public uint uCount;         // 闪烁次数
        public uint dwTimeout;      // 闪烁间隔时间
    }

    public class API
    {
        
         // 同时闪烁窗口标题和任务栏按钮
         public const uint FLASHW_ALL = 3;

         // 持续闪烁直到窗口激活
         public const uint FLASHW_TIMERNOFG = 12;

         // 调用Windows API实现窗口闪烁
         [DllImport("user32.dll")]
         [return: MarshalAs(2)]
         public static extern bool FlashWindowEx(ref FLASHWINFO pwfi);

         // 开始闪烁窗口
         public static void FlashWindow(Window window)
         {
             // 获取窗口句柄
             WindowInteropHelper h = new WindowInteropHelper(window);

             // 初始化闪烁信息
             FLASHWINFO info = new FLASHWINFO
             {
                 hwnd = h.Handle,
                 dwFlags = FLASHW_ALL | FLASHW_TIMERNOFG, // 同时闪烁标题和任务栏,直到窗口激活
                 uCount = uint.MaxValue,  // 无限次数
                 dwTimeout = 0            // 使用默认间隔
             };

             // 设置结构体大小
             info.cbSize = Convert.ToUInt32(Marshal.SizeOf(info));
             // 启动闪烁
             FlashWindowEx(ref info);
        }

         // 停止闪烁窗口
         public static void StopFlashingWindow(Window window)
         {
             WindowInteropHelper h = new WindowInteropHelper(window);

             FLASHWINFO info = new FLASHWINFO
             {
                 hwnd = h.Handle,
                 dwFlags = 0,             // 停止闪烁的标志
                 uCount = uint.MaxValue,
                 dwTimeout = 0
             };

             info.cbSize = Convert.ToUInt32(Marshal.SizeOf(info));
             // 停止闪烁
             FlashWindowEx(ref info);
         }
    }
    
}
相关推荐
lhbweilai12 小时前
STM32 ADC模拟数字转换(hal库)
stm32·单片机·嵌入式硬件
坏柠12 小时前
通信协议入门:单片机怎样把一个数字发送出去?
单片机·嵌入式硬件
dalong1013 小时前
WPF:3D顶点共享与法线设置对光照效果的影响
3d·wpf
小僧景贤14 小时前
STM32 工程文件深度解析(Keil‑MDK + STM32CubeIDE)
stm32·单片机·stm32cubeide
国科安芯14 小时前
低轨卫星姿态与轨道控制系统中高可靠MCU的选型研究——基于AS32S601的抗辐照性能试验数据分析
分布式·科技·单片机·嵌入式硬件·系统架构
小羊先生car15 小时前
RTOS-F429-HAL-Freertos内存管理(2026/8/5)
c语言·单片机·rtos
zcmodeltech17 小时前
工业生产线沙盘模型多段灯带时序控制系统设计:基于STM32与Modbus RTU的连铸-热轧-镀锌全流程联动方案
stm32·单片机·嵌入式硬件·物联网·制造·嵌入式实时数据库·多分类
小僧景贤19 小时前
STM32F407 时钟系统超详解
stm32·单片机·嵌入式硬件
西城微科方案开发19 小时前
胎压计方案开发
单片机·嵌入式硬件
国科安芯19 小时前
卫星星务计算机数据管理中SEU容错机制的技术实现研究——以AS32S601存储器ECC架构为例
网络·单片机·算法·fpga开发·架构·云计算·risc-v