停止任务栏闪烁
时间:2020-03-05 18:43:38 来源:igfitidea点击:
我知道我可以通过编程使特定窗口的任务栏项在发生更改时开始闪烁,但是有什么方法可以阻止它在经过一定时间后以编程方式停止闪烁,或者至少可以通过键盘短路来使它消失我的用户以某种方式停止闪烁?
解决方案
回答
控制闪烁的FlashWindowEx函数采用FLASHWINFO结构,该结构具有uCount字段来控制闪烁次数。此外,dwFlags字段的可能值为FLASHW_STOP,以使闪烁停止。
编辑:忘记是一个被标记的问题...所以在这里找到P / Invoke天哪。
回答
@thomas-令人惊讶的是,Microsoft自己的Windows Vista用户体验指南与我们一致...
While having a background window flash its taskbar button is better than having it automatically come to the top and steal input focus, flashing taskbar buttons are still very intrusive. It is hard for users to concentrate when a taskbar button is flashing, so you should assume that users will immediately stop what they are doing to make the flashing stop. Consequently, reserve taskbar flashing only for situations where immediate attention is required.
当然,谁知道谁实际上遵循了这些准则……甚至谁也阅读了它们。 :)
回答
我们可以考虑使用NotifyIcon,而不是闪烁tasbar。这可以让我们在系统托盘上放一些东西(由于执行此操作的应用程序的增多,许多人认为这是邪恶的)。然后,我们可以弹出一个气球提示,其中包含任何实际描述更改本身的更改。
使用方法:
(1)将NotifyIcon拖到表单上或者在应用程序中创建NotifyIcon notify = new NotifyIcon();
(2)将icon属性设置为所需的图像
(3)使用Visible属性控制它在系统托盘上是否可见
(4)调用ShowBalloonText以显示弹出文本(限制为64个字符)
无论哪种方式,我们都应在程序中添加一个选项,使最终用户可以根据自己对所有功能的感受来打开/关闭此功能。我个人喜欢通知图标,因为气球文本可以显示诸如"服务器故障"之类的信息