1. 程式人生 > >wpf 狀態列圖示背景閃爍提醒 FlashWindowEx

wpf 狀態列圖示背景閃爍提醒 FlashWindowEx

using System;
using System.Runtime.InteropServices;
using System.Windows;
using System.Windows.Interop;

namespace XCommon {
public static class WindowExtensions {
    #region Window Flashing API Stuff

    private const UInt32 FLASHW_STOP = 0; //Stop flashing. The system restores the window to its original state.
    private const UInt32 FLASHW_CAPTION = 1; //Flash the window caption.
    private const UInt32 FLASHW_TRAY = 2; //Flash the taskbar button.
    private const UInt32 FLASHW_ALL = 3; //Flash both the window caption and taskbar button.
    private const UInt32 FLASHW_TIMER = 4; //Flash continuously, until the FLASHW_STOP flag is set.
    private const UInt32 FLASHW_TIMERNOFG = 12; //Flash continuously until the window comes to the foreground.

    [StructLayout(LayoutKind.Sequential)]
    private struct FLASHWINFO {
        public UInt32 cbSize; //The size of the structure in bytes.
        public IntPtr hwnd; //A Handle to the Window to be Flashed. The window can be either opened or minimized.
        public UInt32 dwFlags; //The Flash Status.
        public UInt32 uCount; // number of times to flash the window
        public UInt32 dwTimeout; //The rate at which the Window is to be flashed, in milliseconds. If Zero, the function uses the default cursor blink rate.
    }

    [DllImport("user32.dll")]
    [return: MarshalAs(UnmanagedType.Bool)]
    private static extern bool FlashWindowEx(ref FLASHWINFO pwfi);

    [DllImport("user32.dll")]
    private static extern IntPtr GetForegroundWindow();

    #endregion

    public static void FlashWindow(this Window win, UInt32 count = UInt32.MaxValue, UInt32 interval = 100) {
        //Don't flash if the window is active
        if (win.IsActive) return;

        WindowInteropHelper h = new WindowInteropHelper(win);
        FLASHWINFO info = new FLASHWINFO {
            hwnd = h.Handle,
            dwFlags = FLASHW_ALL | FLASHW_TIMER,
            uCount = count,
            dwTimeout = interval
        };

        info.cbSize = Convert.ToUInt32(Marshal.SizeOf(info));
        FlashWindowEx(ref info);
    }

    public static void StopFlashingWindow(this Window win) {
        WindowInteropHelper h = new WindowInteropHelper(win);

        FLASHWINFO info = new FLASHWINFO();
        info.hwnd = h.Handle;
        info.cbSize = Convert.ToUInt32(Marshal.SizeOf(info));
        info.dwFlags = FLASHW_STOP;
        info.uCount = UInt32.MaxValue;
        info.dwTimeout = 0;

        FlashWindowEx(ref info);
    }
}
}
使用方法:
開始閃爍:FlashWindow(this Window win, UInt32 count = UInt32.MaxValue, UInt32 interval = 100)
win 主窗體,count 閃動次數微信是4次,interval 閃爍間隔毫秒
例子:WindowExtensions.FlashWindow(this, 5, 500);
停止閃爍:
private void window_OnActivated(object sender, EventArgs e) {
        if (this.IsActive) {
            if (notificationTimer.Enabled) {
                notificationTimer.Enabled = false; // 停止閃爍通知區域圖示
                notifyIcon.Icon = icons[0];
            }
            WindowExtensions.StopFlashingWindow(this); // 停止閃爍工作列
        }
    }

相關推薦

wpf 狀態圖示背景閃爍提醒 FlashWindowEx

using System; using System.Runtime.InteropServices; using System.Windows; using System.Windows.Interop; namespace XCommon { public stati

Android標題欄、狀態圖示文字顏色及背景動態變化

android中沉浸式狀態列的文章已經滿大街了,可是在實現某些效果時,還是得各種搜尋,測試一通後,最後還常常滿足不了要求,即使好不容易在一部手機上滿足了需求,放在另外一手機上,發現效果還各種不適配。今天把自己這幾天學到的關於沉浸式狀態列知識進行總結下。 問題 比如我想實現

選單欄 狀態 圖示

上面的一片文章講了,按鈕的方式開啟影象,但是對於實際的應用,很多時候使用選單欄以及狀態列,下面介紹一下選單欄狀態列以及圖示的設定。 1.新增圖示資源右鍵專案“新增新檔案”,選擇Resource File,輸入名稱,路徑不要改。新增字首,新增檔案,這個檔案最好提前放在與專案同樣的目錄之下

Android狀態圖示和字型如何變成深色

最近做了一個頁面,做好後卻發現狀態列的圖示字型什麼的都沒有了,很鬱悶,查了一下才知道安卓狀態列預設是白色的,所以把他的背景設定為與白色相近的顏色自然就看不見。 怎麼變深色呢,查了好多,終於成功了,但貌似安卓6.0以上才可以,我在安卓5.0的手機上試了不變色。 下

狀態變白色,狀態圖示變黑色。

     前幾天下的簡書app,昨天玩手機發現它的狀態列是白色的,圖示是黑色。用nexus6p和榮耀6試了下都是可以的。     今天來查資料發現,M版以上是支援狀態列圖示變色的。m版新增Flag:SYSTEM_UI_FLAG_LIGHT_STATUS_BAR     程式碼

android 5.0以上通知欄、狀態圖示變成白色

目前在Android中通知的使用還是很常見的,為了做版本相容,常用相容包NotificationCompat.Builder和 Notification.Builder。 NotificationCompat.Builder位於v4擴充套件包內(version 4 Support Library)Notif

Android改變狀態背景顏色使其與APP風格一體化

我相信大家肯定看到過很多軟體有沉浸式狀態列,在執行該App時改變了手機螢幕頂部狀態列的顏色,使他們的風格非常的統一,看起來異常的漂亮和清爽。想不想實現這種效果呢,其實在Android KITKAT上有一個新的特性可以設定手機狀態列的背景,讓手機整個介面的風格保持一致,看起來

MTK6225-狀態圖示的顯示與隱藏

enum STATUS_ICON_LIST中,定義了一系列的ICON。 陣列:MMI_status_icon MMI_status_icons[MAX_STATUS_ICONS]裡,定製status icons。 結構體: typedef struct _MMI_status

Android修改狀態背景顏色

一,概述 我相信很多初入Android開發的開發者都為自己開發的app的狀態列煩惱過,狀態列和自己的介面風格格格不入,但是不知道如何修改這個狀態列的顏色,感覺無從下手.我最近就是被這個狀態的預設風格搞得焦頭爛額,終於找到了相應的解決辦法.雖然程式碼不是我寫的,我也只能看懂一

【Android】狀態相關適配(判斷MIUI,Flyme,狀態圖示顏色切換,獲取狀態高度,沉浸式狀態相關等)

對於狀態列相關適配這個事情,真是讓人頭疼的一個模組。因為負責的專案主題色偏偏是白色,不但要去適配 MIUI ,Flyme(因為這兩個都可以實現沉浸式,並且圖示可以切換成黑色),也要分別適配 Android 6.0 以下, Android 6.0 起兩種不同情況(6.0 起原

系統狀態設定背景顏色和APP標題欄一致(非全屏)

可以把方法寫在BaseActivity中 public void initSystemBar(Boolean isLight) { if (Build.VERSION.SDK_INT >= 21) { //LAYOUT_FUL

Android6.0狀態圖示原生反色操作

Android6.0狀態列圖示反色操作 程式碼方式:     public void setDarkStatusIcon(boolean bDark) {        if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.

Android--隱藏狀態圖示

目前狀態列圖示有通知圖示和系統圖標通知圖示主要是指各應用發過來的通知,比如未接電話,截圖,後臺播放音樂等,系統圖標主要有藍芽,耳機,wifi,資料流量,時間和電池...1,不顯示通知圖示,在/frameworks/base/packages/SystemUI/src/com/

刪除Mac右上角可惡的狀態圖示

有的時候我們刪除某個應用程式後,發現在右上角的狀態列還有圖示顯示,而且每次開機啟動,右上角的圖示也都在很是可惡。尤其是萬惡的malwarebytes,還沒有退出選單。今天我就來告訴大家在刪除應用程式後,如何刪除狀態列上的殘留圖示問題。 每次開機啟動,右上角狀態

Android實現修改狀態背景、字型和圖示顏色的方法

前言: Android開發,對於狀態列的修改,實在是不友好,沒什麼api可以用,不像ios那麼方便.但是ui又喜歡只搞ios一套.沒辦法.各種翻原始碼,寫反射.真的蛋疼. 需求場景: 當toolbar及狀態列需要為白色或淺色時(如簡書),狀態列由於用的Light風格Theme,字型,

Mac狀態wifi圖示一直閃爍重複連線但是網路正常的解決辦法

也歡迎大家轉載本篇文章。分享知識,造福人民,實現我們中華民族偉大復興!                     本貓的系統是EI(10.11.6),不知從哪個版本開始(至少是升級到EI之後),狀態列上的wifi圖示一直閃爍,這應該是表示正在連線網路.但是網路是正

廈門之旅第一篇Gradle多渠道打包(動態設定App名稱,應用圖示背景圖片,狀態顏色)

我不是詩人,寫不出廈門的美;我不是歌手,唱不出廈門的情;我不是畫家,畫不出廈門的景。 我只是一名程式設計師,我只能用我的眼,我的心去看去感受,那久違的海風吹拂著臉頰,好似內心那一份煩躁與沉重也隨著海風飄向了遠方 . . . . . . 一、Grad

狀態上顯示會閃爍圖示(類似qq訊息提示)

PS:看了9年的小說,自己開始動手寫了一本,請各位猿們動動手指,點選下,有起點賬號的可以收藏下!!《武意長存》 前兩週公司接了個執行在車機上的行車記錄儀小專案,在做完提交給對方公司測試後,他們提出了當程式在後臺錄影時,需要在狀態列上顯示個閃爍的圖示給使用者進行提示。 好

【ELectron】electron應用工作圖示閃爍提醒

1.在Electron應用中,設定應用工作列圖示的方法很簡單,只需要在main.js加入以下程式碼:const electron = require('electron'); const Tray = electron.Tray; //系統托盤圖示目錄 trayIcon

ios 狀態statusBar的背景顏色

ios 狀態列statusBar的背景顏色 一、無導航條的情況: 系統預設狀態列的字型顏色為黑色,即UIStatusBarStyle=UIStatusBarStyleDefault,同時背景顏色和self.view.backgroundColor顏色一致,如下圖所示: