1

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

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

4

1 回答 1

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");
于 2013-11-07T19:20:18.010 回答