C# Windows API應用之基于FlashWindowEx實現窗口閃爍的方法
本文實例講述了C# Windows API應用之基于FlashWindowEx實現窗口閃爍的方法。分享給大家供大家參考,具體如下:
Windows API
Windows 這個多作業(yè)系統(tǒng)除了協(xié)調應用程序的執(zhí)行、分配內存、管理資源…之外, 它同時也是一個很大的服務中心,調用這個服務中心的各種服務(每一種服務就是一個函數),可以幫應用程式達到開啟視窗、描繪圖形、使用周邊設備等目的,由于這些函數服務的對象是應用程序(Application), 所以便稱之為 Application Programming Interface,簡稱 API 函數。WIN32 API也就是Microsoft Windows 32位平臺的應用程序編程接口。
FlashWindowEx
函數功能:閃爍指定的窗口。它不會更改窗口的激活狀態(tài)。
函數原型:
BOOL WINAPI FlashWindowEx( __in PFLASHWINFO pfwi );
參數:pfwi 指向 FLASHWINFO 結構的指針。。
返回值:返回調用 FlashWindowEx 函數之前指定窗口狀態(tài)。如果調用之前窗口標題是活動的,返回值為非零值。
實現窗口閃爍的方法
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, //無條件閃爍任務欄直到發(fā)送停止標志或者窗口被激活,如果未激活,停止時高亮
FLASHW_TIMERNOFG = FLASHW_TRAY | FLASHW_PARAM2 //未激活時閃爍任務欄直到發(fā)送停止標志或者窗體被激活,停止后高亮
}
FLASHWINFO結構定義
/// <summary>
/// 包含系統(tǒng)應在指定時間內閃爍窗口次數和閃爍狀態(tài)的信息
/// </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#程序設計有所幫助。
- C#獲取進程的主窗口句柄的實現方法
- C#實現利用Windows API讀寫INI文件的方法
- C#中調用Windows API的技術要點說明
- C#調用windows api關機(關機api)示例代碼分享
- c#調用api控制windows關機示例(可以重啟/注銷)
- c#不使用windows api函數打開我的電腦和獲取電腦驅動器信息
- C#中隱式運行CMD命令行窗口的方法
- C# WinForm中禁止改變窗口大小的方法
- C# Winform中實現主窗口打開登錄窗口關閉的方法
- C# WinForm窗口最小化到系統(tǒng)托盤
- 解決C#獲取鼠標相對當前窗口坐標的實現方法
- C# Winform 讓整個窗口都可以拖動
- C# Windows API應用之基于GetDesktopWindow獲得桌面所有窗口句柄的方法

