当前位置:  开发笔记 > 开发工具 > 正文

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

如何解决《当新消息到达时,如何使任务栏像Messenger一样使我的应用程序闪烁?》经验,为你挑选了2个好方法。

是否有.NET中的API调用或本机DLL,当我的聊天来自某人时,我可以使用它来创建与Windows Live Messenger类似的行为?



1> dummy..:

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无耻地插入的


对于WPF应用程序,将fInfo.hwnd设置为`new System.Windows.Interop.WindowInteropHelper(this).Handle`
@oscilatingcretin你可能已经想通了这一点,但我会在这里反正添加它,如果任何人有这个问题.您可以添加:公共常量UInt32的FLASHW_TIMERNOFG = 12; fInfo.dwFlags = FLASHW_ALL | FLASHW_TIMERNOFG; 这将使窗口停止闪烁时,聚焦窗口.

2> nathaniel..:
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。

推荐阅读
爱唱歌的郭少文_
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有