C#实现任务栏高亮(闪烁3s就停止并一直处于高亮状态)



今天用C#做一个类似QQ的通讯软件,因为有时候收到消息了没有注意到,所以想在收到消息后实现任务栏一闪一闪,最后为高亮橘黄色,就像QQ发消息时那样。经过反复搜索和查询API,发现任务栏闪动并停留需要使用这个函数:

public static extern bool FlashWindowEx(ref FLASHWINFO pwfi);

实现的关键代码如下:

[DllImport("user32.dll")]

public static extern bool FlashWindowEx(ref FLASHWINFO pwfi);

public enum falshType: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  //未激活时闪烁任务栏直到发送停止标志或者窗体被激活,停止后高亮

}

public static bool flashTaskBar(IntPtr hWnd, falshType 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);

}

下面的调用:未激活时闪烁任务栏,直到发送停止标志或者窗体被激活,停止后高亮激活后正常,这个跟QQ是一样的,激活窗口是停止高亮的事件:

flashTaskBar(this.Handle, falshType.FLASHW_TIMERNOFG);

但是QQ有一个缺点是,在会话窗口处理激活状态时不闪动,这样有时候就没留意到对方发过来的消息。所以想做成无论是否激活了窗体,只要有新消息的时候任务栏就闪动,直到用户输入了文字才不闪动。这可以用下面这种调用:

flashTaskBar(this.Handle, falshType.FLASHW_TIMER );

再加入一个定时器,让只闪动3s,并且当用户输入时会触发事件,在事件处理函数中加入以下调用就可以了:

下面的调用:停止闪烁,停止后如果未激活窗口,窗口高亮

flashTaskBar(this.Handle, falshType.FLASHW_STOP);

时间: 2024-10-08 10:44:16

C#实现任务栏高亮(闪烁3s就停止并一直处于高亮状态)的相关文章

Atitit.ALT+TAB没反应车and 点击任务栏程序闪烁可是不能切换

Atitit.ALT+TAB没反应车and 点击任务栏程序闪烁可是不能切换 1. 可能你的Alt+Tab键被别人禁用了,试下以下的方法: 1 2. 为什么要禁用Alt+Tab 1 3. ALT+TAB的历史作用 2 4. 解决方式::AltTabTuner1.0.1绿色版(系统设置软件 2 5. 參考 3 1. 可能你的Alt+Tab键被别人禁用了,试下以下的方法: 開始-执行-输入regedit,找到HKEY_CURRENT_USER\Control Panel\Desktop,在右边窗体,双

Atitit.ALT+TAB没反应车and 点击任务栏程序闪烁但是不能切换

Atitit.ALT+TAB没反应车and 点击任务栏程序闪烁但是不能切换 1. 可能你的Alt+Tab键被别人禁用了,试下下面的方法: 1 2. 为什么要禁用Alt+Tab 1 3. ALT+TAB的历史作用 2 4. 解决方案::AltTabTuner1.0.1绿色版(系统设置软件 2 5. 参考 3 1. 可能你的Alt+Tab键被别人禁用了,试下下面的方法: 开始-运行-输入regedit,找到HKEY_CURRENT_USER\Control Panel\Desktop,在右边窗口,双

WPF 任务栏图标闪烁提醒

1 using System; 2 using System.Collections.Generic; 3 using System.Linq; 4 using System.Runtime.InteropServices; 5 using System.Text; 6 using System.Windows; 7 using System.Windows.Interop; 8 9 10 public static class FlashWindow 11 { 12 [DllImport("u

电脑任务栏闪烁以及任务栏图标闪烁解决办法

前言:近来笔者发现电脑不时的电脑桌面和菜单栏会不停的闪烁,只能通过Ctrl + shift + ESC打开任务管理器来重启资源管理器,但是发现重启之后的一会儿好了,但是过一会儿又闪烁,后来琢磨好久,才发现是有软件在更改默认软件,造成资源管理器不断重启,所以桌面图标才不断闪烁,恢复系统默认软件后就好了,下面将方法分享给大家 一,按win键就是键盘左下角Ctrl键右边的一个,然后选择设置按钮,如下如所示 二.打开如下界面,我们选择应用这个选项,如下图所示 三.选择之后选择默认应用 四.选择之后在右边

PHPCMS V9 导航栏当前栏目高亮

实际上这个东西可有可无,很多站点看似导航栏当鼠标指向后都会变化等高亮处理,一般都比较醒目,但是实质点击过去后,都还是只是刚才的样式,因为这些站点的导航栏都没有对当前选中栏目做CSS的指定变化处理. 该方法实际是加入了个条件判断,用来识别当前页是否是主页还是栏目页. {pc:content action="category" catid="0" num="6" siteid="$siteid" order="listo

C# Windows API应用之FlashWindowEx ——实现窗口闪烁的方法

Windows API Windows 这个多作业系统除了协调应用程序的执行.分配内存.管理资源-之外, 它同时也是一个很大的服务中心,调用这个服务中心的各种服务(每一种服务就是一个函数),可以帮应用程式达到开启视窗.描绘图形.使用周边设备等目的,由于这些函数服务的对象是应用程序(Application), 所以便称之为 Application Programming Interface,简称 API 函数.WIN32 API也就是Microsoft Windows 32位平台的应用程序编程接口

一个C#语法高亮插件

语法高亮对程序员阅读代码来说有着不小的帮助,虽然VisualStudio本身支持C#语法高亮,但也只是对关键字.类名.字符串等少数元素加了标记,而我们代码中主题:变量.函数.属性.事件等都没有进行高亮,如下所示: ????var nodes = from id in GetIdentifiersInSpans(doc.Workspace, doc.SemanticModel, spans)????????????????let node = doc.SyntaxRoot.FindNode(id.

导航跳转后保持选中状态 jquery高亮当前选中菜单

功能需求:今天在写一个站点需要用到在导航菜单点击链接跳转到新页面后,高亮当前菜单样式.简单的说,就是我点击导航菜单中的一个栏目,跳转到该栏目下,该栏目菜单也同时高亮(可以是背景色也可以是背景图片) 解决方法:通过查看实例,我们需要用到JS中的jquery来实现这种效果,也可以通过CSS设置不同页面的a:hover实现效果,不过这显然是比较笨拙的方法.那么,如何用JS来实现效果呢,实现它所用的原理就是通过js中的location.href得到当前页面的地址,然后在与导航上的链接地址匹对,相同的就用

<iOS 导航栏>第一节:导航栏透明方法实现代码

说下导航栏的透明方法: 很多应用需要导航栏随着向上滑动,逐渐从透明变成不透明,很炫酷,大部分应用都在使用导航栏渐变效果,现附上代码然后直接将实现,一会讲下如何来实现,这一部分直接上代码. 先附上代码: 方法声明: #import <UIKit/UIKit.h> @interface IDSNavBarView : UIView - (instancetype)initWithFrame:(CGRect)frame titleImg:(UIImage *)aTitleImg; - (UILabe