2010-05-16 17 views
2

幾乎在所有的即時通訊窗口最小化爲任務欄的通訊工具中,當您有新消息時,IM任務欄項目會更改顏色或變得更亮。我一直在尋找任何幫助,如何使用.NET Winforms或WPF執行此操作如何突出顯示任務欄項目

任何代碼示例?

============================================== =======================

編輯:我用我的WPF窗口的FlashWindow。

編號:http://www.aeoth.net/blog/2007/04/27/flashing-the-window-in-wpf-c-2/

回答

7

你要使用FlashWindowEx功能。基本上,獲取窗口的句柄,用句柄創建一個FLASHWINFO結構,以及如何讓窗口閃爍(不斷地,直到它被打開等),並將其傳遞到FlashWindowEx中。

編輯:這是關於如何在C#中執行的example

+0

在C#中的另一個例子在這裏:http://jarloo.com/code/wpf/flashing-a-wpf-window/ – manuc66 2011-08-11 11:28:01

+0

上面的鏈接現在已經過時了,新的鏈接= http://www.jarloo.com/flashing-a-wpf-window/ – RenniePet 2011-10-11 02:40:09

0

我仍然困惑如何使它突出顯示任務欄項目,而不是閃光。這裏是最終爲我工作的代碼(我覺得將設置計數設置爲1非常愚蠢,希望這會節省別人的時間)。

Public Structure FLASHWINFO 
    Public cbSize As UInt32 
    Public hwnd As IntPtr 
    Public dwFlags As UInt32 
    Public uCount As UInt32 
    Public dwTimeout As UInt32 
End Structure 

Private Declare Function FlashWindowEx Lib "user32.dll" (ByRef pfwi As FLASHWINFO) As Boolean 

Private Const FLASHW_STOP As UInt32 = 0 
Private Const FLASHW_CAPTION As UInt32 = 1 
Private Const FLASHW_TRAY As UInt32 = 2 
Private Const FLASHW_ALL As UInt32 = 3 
Private Const FLASHW_TIMER As UInt32 = 4 
Private Const FLASHW_TIMERNOFG As UInt32 = 12 

Public Shared Sub Flash(ByRef thisForm As Form) 
    Dim flash As New FLASHWINFO With { 
    .cbSize = System.Runtime.InteropServices.Marshal.SizeOf(flash), 
    .hwnd = thisForm.Handle, 
    .dwFlags = FLASHW_TRAY Or FLASHW_TIMERNOFG, 
    .uCount = 1} 
    'Leaving out .dwCount seems to work just fine for me, the uCount above keeps it from flashing 

    FlashWindowEx(flash) 
End Sub 
+0

這不起作用。將uCount設置爲1只閃爍一次。仍然搜索只是使任務欄按鈕橙色,我不希望任何閃爍或閃爍。 – Edwin 2017-03-04 10:00:25

+0

@Edwin我想知道它是否具體操作系統?我想我當時可能使用Windows 7(或者甚至是Windows XP)。 – 2017-03-04 15:59:40

+1

我發現dwTimeout是閃光之間的時間,而不是閃光的速度。將其設置爲1(毫秒),將uCount設置爲UInt32.Max現在可以執行此任務,任務欄按鈕爲橙色並保持橙色。也許它與操作系統有關。 – Edwin 2017-03-04 16:16:34