本文實例講述了C# Windows API應用之基于FlashWindowEx實現窗口閃爍的方法。分享給大家供大家參考,具體如下:
Windows API
Windows 這個多作業系統除了協調應用程序的執行、分配內存、管理資源…之外, 它同時也是一個很大的服務中心,調用這個服務中心的各種服務(每一種服務就是一個函數),可以幫應用程式達到開啟視窗、描繪圖形、使用周邊設備等目的,由于這些函數服務的對象是應用程序(Application), 所以便稱之為 Application Programming Interface,簡稱 API 函數。WIN32 API也就是Microsoft Windows 32位平臺的應用程序編程接口。
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);}
更多關于C#相關內容感興趣的讀者可查看本站專題:《C#窗體操作技巧匯總》、《C#數據結構與算法教程》、《C#常見控件用法教程》、《C#面向對象程序設計入門教程》及《C#程序設計之線程使用技巧總結》
希望本文所述對大家C#程序設計有所幫助。
新聞熱點
疑難解答