任务栏窗口和状态图标的闪动 z

Demo程序:

实现任务栏窗体和图标的闪动:

整个程序是基于Windows
Forms的,对于任务栏右下角状态图标的闪动,创建了一个类型:NotifyIconAnimator,基本上是包装了Windows
Forms中的NotifyIcon类型,然后内部有个Timer,不断循环设置NotifyIcon的Icon属性从而实现图标的闪烁。使用起来很简单,开始动画方法:

//开始闪烁,icons是图标列表,interval是Timer间隔,loopCount是闪烁次数,-1代表永远循环 publicvoid StartAnimation(Icon[] icons, int interval, int loopCount)

停止动画方法是StopAnimation,直接调用就好。

NotifyIconAnimator的构造函数需要NotifyIcon对象,同时在StartAnimation调用后,当前NotifyIcon的图标会被缓存,当StopAnimation被调用后,缓存的图标会重新还原到NotifyIcon对象上。

对于窗口的闪烁,当然是直接调用FlashWindowEx Win32
API,这个函数在Windows XP中才有(Windows 2000可以忽略了吧)。具体API封装可以直接参考pinvoke.net,里面也有直接对Form类型的支持。

还有一点,当当前窗口是活动窗口后调用FlashWindowEx的话,窗口标题栏会闪烁的,如果不希望这样,即只有在当前窗口是非活动窗口才要进行闪烁的话,需要额外调用GetForegroundWindow
API,通过对比程序窗口和桌面活动窗口的Handle,如果不一样,说明程序窗口不是当前活动窗口,然后再调用FlashWindowEx即可,如下参考代码:

//窗体中3秒后非活动闪烁窗口的按钮点击事件执行 //NativeMethods类型是Win32 API的封装类型,请参考源代码或者pinvoke.net privateasyncvoid button4_Click(object sender, EventArgs e) { //等3秒 awaitTask.Delay(3000); //判断Form的Handle是否是当前活动窗口的Handle if (this.Handle !=NativeMethods.GetForegroundWindow()) //如果是的话,执行FlashWindowEx NativeMethods.FlashWindowEx(this); }

任务栏窗口和状态图标的闪动 z,布布扣,bubuko.com

时间: 2024-08-06 07:30:11

任务栏窗口和状态图标的闪动 z的相关文章

VC 获取任务栏窗口的句柄

 本文将介绍一个未公开的Win32 API函数:GetTaskmanWindow,利用它对Windows的任务栏进行操作.这个函数返回拥有任务栏按钮的窗口句柄.在微软的MSDN文档中,对任务栏是这样描述的:"--Windows界面包含一个特殊的应用程序桌面工具栏,叫做任务栏.任务栏可以用于在打开的不同窗口之间进行切换,以及启动新的应用程序--.任务栏包含有开始菜单.任务栏按钮.快捷菜单和状态显示区--".可惜在Win32 API的正式问当中没有能存取任务栏的函数.因此我们必须使用未

任务栏窗口列表

var I: integer; spDisp: IDispatch; IE1: IWebBrowser2; ShellWindow: IShellWindows;begin ListBox1.clear; ShellWindow := CoShellWindows.Create; for I := 0 to ShellWindow.Count - 1 do begin try spDisp := ShellWindow.Item(I); if (spDisp <> nil) then begi

CAD命令栏窗口跑到屏幕外面怎么找回来

话不多说,直接上图,五步搞定,在第五步那里把默认的floating改成Button就OK了,然后你想摆哪就摆哪. 原文地址:http://blog.51cto.com/edenzhou/2162723

Android窗口管理服务WindowManagerService计算窗口Z轴位置的过程分析

文章转载至CSDN社区罗升阳的安卓之旅,原文地址:http://blog.csdn.net/luoshengyang/article/details/8570428 通过前面几篇文章的学习,我们知道了在 Android系统中,无论是普通的Activity窗口,还是特殊的输入法窗口和壁纸窗口,它们都是被WindowManagerService服务组 织在一个窗口堆栈中的,其中,Z轴位置较大的窗口排列在Z轴位置较小的窗口的上面.有了这个窗口堆栈之后,WindowManagerService服务 就可

如何弹出一个窗口气泡(使用定时器向上移动)

原文链接:http://blog.csdn.net/tangaowen/article/details/5108980 如何弹出一个窗口气泡 最近在工作中遇到这样一个需求,就是需要将一个窗口从右下角任务栏下面缓缓的上升到任务栏的上面,现在有很多的软件都有这样的气泡,比如:搜狗输入法的词条更新窗口,还比如CSDN的广告窗口等等. 1.首先 将要弹出的窗口移动到任务栏(当前屏幕)以下 2.然后,获得任务栏(本质是个窗口)的高度,这样就可以知道窗口最终的位置了 3.然后,计算获得窗口最终停止的位置:计

推荐提升效率的4个Windows 10任务栏快捷键

关于Linux的学习请关注书籍<Linux就该这么学>,还可以关注Linuxprobe网站 从 Windows 95 开始到现在的 Windows 10 系统,「任务栏」一直是 Windows 的重要组成部分和标志,虽然在使用过程中仍时不时会遇到一些奇怪问题,但时至今日无可否认,它在外观和功能上都已经有了突飞猛进的改善. Windows 10 中的任务栏可以算是(我个人认为)最好用的一个迭代版本,用户不仅可以在多个方面对其进行自定义定制,还可以进行调整让它更符合你的使用习惯,提高生产效率. 但

Android应用程序窗口(Activity)与WindowManagerService服务的连接过程分析

在前两文中,我们分析了Activity组件的窗口对象和视图对象的创建过程.Activity组件在其窗口对象和视图对象创建完成之后,就会请求与WindowManagerService建立一个连接,即请求WindowManagerService为其增加一个WindowState对象,用来描述它的窗口状态.在本文中,我们就详细分析Activity组件与WindowManagerService的连接过程. 我们从两方面来看Activity组件与WindowManagerService服务之间的连接.一方

PYQT窗口风格

setWindowFlags(Qt.WindowFlags)函数,Qt.WindowFlags类如下: 1.窗口类型 Qt.Qt.Widget#插件默认窗口,有最小化.最大化.关闭按钮 Qt.Qt.Window#普通窗口,有最小化.最大化.关闭按钮 Qt.Qt.Dialog#对话框窗口,有问号和关闭按钮 Qt.Qt.Popup#弹出窗口,窗口无边框化 Qt.Qt.ToolTip#提示窗口,窗口无边框化,无任务栏窗口 Qt.Qt.SplashScreen#飞溅屏幕,窗口无边框化,无任务栏窗口 Qt

c# UpdateLayeredWindow异形窗口

#region UpdateLayeredWindow #region 重写窗体的 CreateParams 属性 protected override CreateParams CreateParams { get { CreateParams cp = base.CreateParams; cp.ExStyle |= 0x00080000; // WS_EX_LAYERED 扩展样式 //无边框任务栏窗口最小化 const int WS_MINIMIZEBOX = 0x00020000; /