是否有.NET中的API调用或本机DLL,当我与之聊天的人发出响应时,我可以使用它来创建与Windows Live Messenger类似的行为?
答案 0 :(得分:23)
FlashWindowEx是要走的路。见here for MSDN documentation
[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
无耻地插入的答案 1 :(得分:4)
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被盗。
答案 2 :(得分:3)
来自Raymond Chen博客文章:
<强> How do I flash my window caption and taskbar button manually? 强>
如何刷新窗口标题和 手动任务栏按钮?评论者 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提起下:代码
答案 3 :(得分:2)
FlashWindowEx Win32 API是用于执行此操作的调用。其文档位于: http://msdn.microsoft.com/en-us/library/ms679347(VS.85).aspx
答案 4 :(得分:0)
我相信你正在寻找SetForegroundWindow
。