Windows API
Windows 這個多作業系統除了協調應用程式的執行、分配記憶體、管理資源…之外, 它同時也是一個很大的服務中心,調用這個服務中心的各種服務(每一種服務就是一個函數),可以幫應用程式達到開啟視窗、描繪圖形、使用周邊裝置等目的,由於這些函數服務的對象是應用程式(Application), 所以便稱之為 Application Programming Interface,簡稱 API 函數。WIN32 API也就是Microsoft Windows 32位平台的API。
FlashWindowEx
函數功能:閃爍指定的視窗。它不會更改視窗的啟用狀態。
函數原型:BOOL WINAPI FlashWindowEx(
__in PFLASHWINFO pfwi
);
參數:pfwi 指向 FLASHWINFO 結構的指標。。
傳回值:返回調用 FlashWindowEx 函數之前指定視窗狀態。如果調用之前視窗標題是活動的,傳回值為非零值。
實現視窗閃爍的方法
API匯入
/// <summary> /// 閃爍視窗 /// </summary> /// <param name="pwfi">視窗閃爍資訊結構</param> /// <returns></returns> [DllImport("user32.dll")] public static extern bool FlashWindowEx(ref FLASHWINFO pwfi);
閃爍類型枚舉定義
/// <summary> /// 閃爍類型 /// </summary> public enum flashType : uint { FLASHW_STOP = 0, //停止閃爍 FALSHW_CAPTION = 1, //只閃爍標題 FLASHW_TRAY = 2, //只閃爍工作列 FLASHW_ALL = 3, //標題和工作列同時閃爍 FLASHW_PARAM1 = 4, FLASHW_PARAM2 = 12, FLASHW_TIMER = FLASHW_TRAY | FLASHW_PARAM1, //無條件閃爍工作列直到發送停止標誌或者視窗被啟用,如果未啟用,停止時高亮 FLASHW_TIMERNOFG = FLASHW_TRAY | FLASHW_PARAM2 //未啟用時閃爍工作列直到發送停止標誌或者表單被啟用,停止後高亮 }
FLASHWINFO結構定義
/// <summary> /// 包含系統應在指定時間內閃爍視窗次數和閃爍狀態的資訊 /// </summary> public struct FLASHWINFO { /// <summary> /// 結構大小 /// </summary> public uint cbSize; /// <summary> /// 要閃爍或停止的視窗控制代碼 /// </summary> public IntPtr hwnd; /// <summary> /// 閃爍的類型 /// </summary> public uint dwFlags; /// <summary> /// 閃爍視窗的次數 /// </summary> public uint uCount; /// <summary> /// 視窗閃爍的頻度,毫秒為單位;若該值為0,則為預設表徵圖的閃爍頻度 /// </summary> public uint dwTimeout; }
閃爍視窗方法封裝
/// <summary> /// 閃爍視窗 /// </summary> /// <param name="hWnd">視窗控制代碼</param> /// <param name="type">閃爍類型</param> /// <returns></returns> public static bool FlashWindowEx(IntPtr hWnd, flashType type) { FLASHWINFO fInfo = new FLASHWINFO(); fInfo.cbSize = Convert.ToUInt32(Marshal.SizeOf(fInfo)); fInfo.hwnd = hWnd;//要閃爍的視窗的控制代碼,該視窗可以是開啟的或最小化的 fInfo.dwFlags = (uint)type;//閃爍的類型 fInfo.uCount = UInt32.MaxValue;//閃爍視窗的次數 fInfo.dwTimeout = 0; //視窗閃爍的頻度,毫秒為單位;若該值為0,則為預設表徵圖的閃爍頻度 return FlashWindowEx(ref fInfo); }