有没有在.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
。