如何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来刷新外部窗口。
答案 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");