如何让任务栏像Messenger一样在新消息到达时闪烁我的应用程序?

有没有在.NET中的API调用或本机DLL,我可以用来创build类似的行为作为Windows Live Messenger的响应来自我聊天的人?

FlashWindowEx是要走的路。 请参阅这里的MSDN文档

[DllImport("user32.dll")] [return: MarshalAs(UnmanagedType.Bool)] static extern bool FlashWindowEx(ref FLASHWINFO pwfi); [StructLayout(LayoutKind.Sequential)] public struct FLASHWINFO { public UInt32 cbSize; public IntPtr hwnd; public UInt32 dwFlags; public UInt32 uCount; public UInt32 dwTimeout; } public const UInt32 FLASHW_ALL = 3; 

调用函数:

 FLASHWINFO fInfo = new FLASHWINFO(); fInfo.cbSize = Convert.ToUInt32(Marshal.SizeOf(fInfo)); fInfo.hwnd = hWnd; fInfo.dwFlags = FLASHW_ALL; fInfo.uCount = UInt32.MaxValue; fInfo.dwTimeout = 0; FlashWindowEx(ref fInfo); 

这是从Pinvoke.net无耻插入

 HWND hHandle = FindWindow(NULL,"YourApplicationName"); FLASHWINFO pf; pf.cbSize = sizeof(FLASHWINFO); pf.hwnd = hHandle; pf.dwFlags = FLASHW_TIMER|FLASHW_TRAY; // (or FLASHW_ALL to flash and if it is not minimized) pf.uCount = 8; pf.dwTimeout = 75; FlashWindowEx(&pf); 

从专家交换成员gtokas窃取。

FlashWindowEx 。

来自Raymond Chen博客条目:

如何手动刷新我的窗口标题和任务栏按钮?

如何手动刷新我的窗口标题和任务栏按钮? 评论者Jonathan Scheepers想知道那些无限期地刷新任务栏按钮的程序,覆盖SysteParametersInfo(SPI_SETFOREGROUNDFLASHCOUNT)设置的默认闪存计数。

FlashWindowEx函数及其更简单的前驱FlashWindow让程序手动刷新其窗口标题和任务栏按钮。 如果程序调用SetForegroundWindow,但没有前台权限,窗口管理器会自动闪烁字幕(并且资源管理器按照标题闪烁任务栏按钮),并且SPI_SETFOREGROUNDFLASHCOUNT设置控制的是自动闪烁。

为了说明的目的,我将演示手动闪烁的说明。 这通常是不被推荐的,但是既然你问了,我会告诉你如何。 然后承诺你不会这样做。

从零开始程序开始,进行简单的更改:

 void OnSize(HWND hwnd, UINT state, int cx, int cy) { if (state == SIZE_MINIMIZED) { FLASHWINFO fwi = { sizeof(fwi), hwnd, FLASHW_TIMERNOFG | FLASHW_ALL }; FlashWindowEx(&fwi); } } 

编译并运行该程序,然后将其最小化。 当你这样做时,它的任务栏按钮将无限期地闪烁,直到你点击它。 程序的响应是通过调用FlashWindowEx函数来最小化,要求一切可能的(当前的标题和任务栏按钮)被刷新,直到窗口到达前景。

FLASHWINFO结构的其他成员可以进一步自定义闪烁行为,例如控制闪光频率和闪光次数。 如果你真的想要控制,你可以使用FLASHW_ALL和FLASHW_STOP来按照你想要的方式打开和关闭你的标题和任务栏按钮。 (谁知道,也许你想用莫尔斯电码发送信息。)

发表于2008年5月12日星期一上午7:00由oldnewthing提起下:代码

FlashWindowEx Win32 API是用于执行此操作的调用。 它的文档是: http : //msdn.microsoft.com/en-us/library/ms679347(VS.85).aspx

我相信你正在寻找SetForegroundWindow