有消息提醒时,会有窗口工具栏闪烁的需求,实现方法如下:
Win32.EnumWindowsProc ewp = GetWin;
Win32.EnumWindows(ewp, 0);
private bool GetWin(IntPtr hWnd, IntPtr lParam)
{
if (hWnd != _wndHelper.Handle)
{
int cTxtLen = Win32.GetWindowTextLength(hWnd) + 1;
StringBuilder title = new StringBuilder(cTxtLen);
Win32.GetWindowText(hWnd, title, cTxtLen);
if (title.ToString() == this.Title)
{
if (Win32.IsIconic(hWnd))
{
Win32.FlashWindow(hWnd, true);
Win32.FlashWindow(hWnd, false);
}
else
{
Win32.SetForegroundWindow(hWnd);
}
this.Close();
}
}
return true;
}
其中Win32类主要用于注册window函数,包括如下:
public class Win32
{
[DllImport("user32.dll")]
public static extern bool IsIconic(IntPtr hWnd);
[DllImport("user32.dll")]
public static extern bool FlashWindow(IntPtr hWnd, bool bInvert);
[DllImport("User32.dll")]
public static extern bool SetForegroundWindow(IntPtr hWnd);
public delegate bool EnumWindowsProc(IntPtr hWnd, IntPtr lParam);
[DllImport("user32.dll")]
public static extern int EnumWindows(EnumWindowsProc ewp, int lParam);
[DllImport("user32.dll")]
public static extern int GetWindowTextLength(IntPtr hWnd);
[DllImport("user32.dll")]
public static extern int GetWindowText(IntPtr hWnd, StringBuilder title, int size);
}