C# Windows API应用之基于FlashWindowEx实现窗口闪烁的方法
作者:微wx笑 发布时间:2023-06-30 12:55:22
标签:C#,Windows,API,窗口闪烁
本文实例讲述了C# Windows API应用之基于FlashWindowEx实现窗口闪烁的方法。分享给大家供大家参考,具体如下:
Windows API
Windows 这个多作业系统除了协调应用程序的执行、分配内存、管理资源…之外, 它同时也是一个很大的服务中心,调用这个服务中心的各种服务(每一种服务就是一个函数),可以帮应用程式达到开启视窗、描绘图形、使用周边设备等目的,由于这些函数服务的对象是应用程序(Application), 所以便称之为 Application Programming Interface,简称 API 函数。WIN32 API也就是Microsoft Windows 32位平台的应用程序编程接口。
FlashWindowEx
函数功能:闪烁指定的窗口。它不会更改窗口的激活状态。
函数原型:
BOOL WINAPI FlashWindowEx(
__in PFLASHWINFO pfwi
);
参数:pfwi 指向 FLASHWINFO 结构的指针。。
返回值:返回调用 FlashWindowEx 函数之前指定窗口状态。如果调用之前窗口标题是活动的,返回值为非零值。
实现窗口闪烁的方法
API导入
/// <summary>
/// 闪烁窗口
/// </summary>
/// <param name="pwfi">窗口闪烁信息结构</param>
/// <returns></returns>
[DllImport("user32.dll")]
public static extern bool FlashWindowEx(ref FLASHWINFO pwfi);
闪烁类型枚举定义
/// <summary>
/// 闪烁类型
/// </summary>
public enum flashType : uint
{
FLASHW_STOP = 0, //停止闪烁
FALSHW_CAPTION = 1, //只闪烁标题
FLASHW_TRAY = 2, //只闪烁任务栏
FLASHW_ALL = 3, //标题和任务栏同时闪烁
FLASHW_PARAM1 = 4,
FLASHW_PARAM2 = 12,
FLASHW_TIMER = FLASHW_TRAY | FLASHW_PARAM1, //无条件闪烁任务栏直到发送停止标志或者窗口被激活,如果未激活,停止时高亮
FLASHW_TIMERNOFG = FLASHW_TRAY | FLASHW_PARAM2 //未激活时闪烁任务栏直到发送停止标志或者窗体被激活,停止后高亮
}
FLASHWINFO结构定义
/// <summary>
/// 包含系统应在指定时间内闪烁窗口次数和闪烁状态的信息
/// </summary>
public struct FLASHWINFO
{
/// <summary>
/// 结构大小
/// </summary>
public uint cbSize;
/// <summary>
/// 要闪烁或停止的窗口句柄
/// </summary>
public IntPtr hwnd;
/// <summary>
/// 闪烁的类型
/// </summary>
public uint dwFlags;
/// <summary>
/// 闪烁窗口的次数
/// </summary>
public uint uCount;
/// <summary>
/// 窗口闪烁的频度,毫秒为单位;若该值为0,则为默认图标的闪烁频度
/// </summary>
public uint dwTimeout;
}
闪烁窗口方法封装
/// <summary>
/// 闪烁窗口
/// </summary>
/// <param name="hWnd">窗口句柄</param>
/// <param name="type">闪烁类型</param>
/// <returns></returns>
public static bool FlashWindowEx(IntPtr hWnd, flashType type)
{
FLASHWINFO fInfo = new FLASHWINFO();
fInfo.cbSize = Convert.ToUInt32(Marshal.SizeOf(fInfo));
fInfo.hwnd = hWnd;//要闪烁的窗口的句柄,该窗口可以是打开的或最小化的
fInfo.dwFlags = (uint)type;//闪烁的类型
fInfo.uCount = UInt32.MaxValue;//闪烁窗口的次数
fInfo.dwTimeout = 0; //窗口闪烁的频度,毫秒为单位;若该值为0,则为默认图标的闪烁频度
return FlashWindowEx(ref fInfo);
}
希望本文所述对大家C#程序设计有所帮助。
0
投稿
猜你喜欢
- 本文介绍了JAVA利用HttpClient进行HTTPS接口调用的方法,分享给大家,具体如下:1.为了避免需要证书,所以用一个类继承Defa
- 本文实例为大家分享了C#生成唯一订单号的具体代码,供大家参考,具体内容如下根据GUID+DateTime.Now.Ticks生产唯一订单号/
- 一:日志:1、配置日志级别日志记录器(Logger)的行为是分等级的。如下表所示:分为:OFF、FATAL、ERROR、WARN、INFO、
- 本文实例为大家分享了Mybatis分页插件使用的具体代码,供大家参考,具体内容如下1.分页插件简介pagehelper源码都说这是史上最好用
- 前情提要我们上节内容学习了如何创建\注册\读取bean我们发现bean对象操作十分的繁琐!所以我们这个章节,就带大家来了解更加简单的bean
- 本文实例为大家分享了Intent实现页面跳转的两种的方法,供大家参考,具体内容如下下图中两个不同的方法就是两种页面之间跳转的情况1).跳转不
- 此处网上最多的做法是需要修改tomcat的参数配置大致如下:<Connector port="8080" prot
- 需要修改Main方法第一行代码的路径为你的books.xml文件绝对路径或相对路径。代码演示了XPath各种语法的使用情况books.xml
- 用c#中创建一个windows服务非常简单,与windows服务相关的类都在System.ServiceProcess命名空间下。每个服务都
- 1. 介绍结合上面的ReentrantLock类图,ReentrantLock实现了Lock接口,它的内部类Sync继承自AQS,绝大部分使
- 1.鼠标右击我的电脑–》属性–》高级系统设置2.把下面的变量名称和电脑文件的本地路径填进去即可(注意:变量值后面后面不要带分号)jdk环境变
- 三个例子 —JAVA发送http get/post请求,调用http接口、方法例1:使用 HttpClient (commons-httpc
- 1:和junit一起使用的时候因为没有读取配置文件,所以老是报创建Bean失败,上网查了查,原来是先要读取spring的核心配置文件,这样机
- 定时任务1import lombok.extern.slf4j.Slf4j;/** * @author Created by niugang
- 软件需求VS2019社区版、win10操作系统、opencv4.1.0VS2019社区版(免费) 下载地址OpenCV4.1.0 下载地址配
- 一. CodeCache简介从字面意思理解就是代码缓存区,它缓存的是JIT(Just in Time)编译器编译的代码,简言之codeCac
- 前言J.U.C是java包java.util.concurrent的简写,中文简称并发包,是jdk1.5新增用来编写并发相关的基础api。j
- 1.静态成员、实例成员1.1定义及说明数据成员:静态成员:静态成员变量是和类相关联的,可以作为类中"共"有的变量(是一个
- 缓存是HTTP协议的一个强大功能,但由于某些原因,它主要用于静态资源,如图像,CSS样式表或JavaScript文件,但是,HTTP缓存不仅
- @RequestMapping注解注意点类上加没加@RequestMappin注解区别1.如果类上加了 @RequestMappin注解,那