C#實現工作列高亮(閃爍3s就停止並一直處於高亮狀態)

來源:互聯網
上載者:User

標籤:style   io   使用   ar   div   sp   代碼   on   c   



今天用C#做一個類似QQ的通訊軟體,因為有時候收到訊息了沒有注意到,所以想在收到訊息後實現工作列一閃一閃,最後為高亮橘黃色,就像QQ發訊息時那樣。經過反覆搜尋和查詢API,發現工作列閃動並停留需要使用這個函數:
public static extern bool FlashWindowEx(ref FLASHWINFO pwfi);
實現的關鍵代碼如下:

        [DllImport("user32.dll")]
        public static extern bool FlashWindowEx(ref FLASHWINFO pwfi);

        public enum falshType: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  //未啟用時閃爍工作列直到發送停止標誌或者表單被啟用,停止後高亮
        }

        public static bool flashTaskBar(IntPtr hWnd, falshType 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);
        }


下面的調用:未啟用時閃爍工作列,直到發送停止標誌或者表單被啟用,停止後高亮啟用後正常,這個跟QQ是一樣的,啟用視窗是停止高亮的事件:
flashTaskBar(this.Handle, falshType.FLASHW_TIMERNOFG);

但是QQ有一個缺點是,在會話視窗處理啟用狀態時不閃動,這樣有時候就沒留意到對方發過來的訊息。所以想做成無論是否啟用了表單,只要有新訊息的時候工作列就閃動,直到使用者輸入了文字才不閃動。這可以用下面這種調用:

flashTaskBar(this.Handle, falshType.FLASHW_TIMER );

再加入一個定時器,讓只閃動3s,並且當使用者輸入時會觸發事件,在事件處理函數中加入以下調用就可以了:

下面的調用:停止閃爍,停止後如果未啟用視窗,視窗高亮

flashTaskBar(this.Handle, falshType.FLASHW_STOP);



C#實現工作列高亮(閃爍3s就停止並一直處於高亮狀態)

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.