Flash外部窗口

时间:2013-11-07 08:56:26

标签: c# .net winforms

如何Flash外部应用程序的TaskBar图标?我已经尝试过FlashWindowEx并在onpInvoke.net和http://pietschsoft.com/post/2009/01/26/CSharp-Flash-Window-in-Taskbar-via-Win32-FlashWindowEx上检查了它,但这只涉及闪烁当前表格(这个)。我不能让它成为Flash的外部窗口。

我有一个hWnd(IntPtr),还有一个process.MainWindowHandle到我想要闪存的外部应用程序,但我不知道如何使用FlashWindowEx来刷新外部窗口。

1 个答案:

答案 0 :(得分:1)

当您致电FlashWindowEx时,只需传递您要闪存的其他应用程序的MainWindowHandle。例如,您可以使用下面显示的FlashOtherWindow函数,传入句柄。

    [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;
    }

    internal static void FlashOtherWindow(IntPtr windowHandle)
    {
        FLASHWINFO fInfo = new FLASHWINFO();
        fInfo.cbSize = Convert.ToUInt32(Marshal.SizeOf(fInfo));
        fInfo.dwFlags = 2;
        fInfo.dwTimeout = 0;
        fInfo.hwnd = windowHandle;
        fInfo.uCount = 3;

        FlashWindowEx(ref fInfo);
    }

    internal static void FlashApplicationWindow(string application)
    {
        foreach (Process process in Process.GetProcessesByName(application))
            FlashOtherWindow(process.MainWindowHandle);
    }

我还包含了FlashApplicationWindow,其中包含应用程序的名称。您可以像这样使用它:

    FlashApplicationWindow("firefox");