2008-08-22 20 views
5

Bir Makineyi kontrol eden bir uygulama geliştiriyorum.
Makineden bir hata aldığımda, kullanıcılar bunu doğrudan fark edebilmeli, yapılan bir işlem ise görev çubuğunda tepsiyi yanıp sönmektir. Makine hatayı temizlediğinde, tepsi yanıp sönmeyi bırakmalıdır.FlashWindowEx FLASHW_STOP hala görev çubuğunu renkli olarak koruyor

Ben turuncu (yanıp sönen değil) (benim durumumda winXP olarak) pencerenin yanıp sönen, orada kalıyor temizlediğinizde, FlashWindowEx işlevini kullanarak bir küçük sıkıntı var. Benim durumumda


    [Flags] 
     public enum FlashMode { 
      /// 
      /// Stop flashing. The system restores the window to its original state. 
      /// 
      FLASHW_STOP = 0, 
      /// 
      /// Flash the window caption. 
      /// 
      FLASHW_CAPTION = 1, 
      /// 
      /// Flash the taskbar button. 
      /// 
      FLASHW_TRAY = 2, 
      /// 
      /// Flash both the window caption and taskbar button. 
      /// This is equivalent to setting the FLASHW_CAPTION | FLASHW_TRAY flags. 
      /// 
      FLASHW_ALL = 3, 
      /// 
      /// Flash continuously, until the FLASHW_STOP flag is set. 
      /// 
      FLASHW_TIMER = 4, 
      /// 
      /// Flash continuously until the window comes to the foreground. 
      /// 
      FLASHW_TIMERNOFG = 12 
     } 

     public static bool FlashWindowEx(IntPtr hWnd, FlashMode fm) { 
      FLASHWINFO fInfo = new FLASHWINFO(); 

      fInfo.cbSize = Convert.ToUInt32(Marshal.SizeOf(fInfo)); 
      fInfo.hwnd = hWnd; 
      fInfo.dwFlags = (UInt32)fm; 
      fInfo.uCount = UInt32.MaxValue; 
      fInfo.dwTimeout = 0; 

      return FlashWindowEx(ref fInfo); 
     } 

     [StructLayout(LayoutKind.Sequential)] 
     public struct FLASHWINFO { 
      public UInt32 cbSize; 
      public IntPtr hwnd; 
      public UInt32 dwFlags; 
      public UInt32 uCount; 
      public UInt32 dwTimeout; 
     } 

Sample of status


Ben yanıp durdurmak ve FLASHW_STOP yanıp sönmeye başlamasını FLASHW_TRAY kullanın.

ben yanlış mı yapıyorum ya bu WinXP bilinen bir hatadır ve orada bunun için bir düzeltmedir? görev çubuğu düğmesi renkli kalır: bir pencere olarak uzun o gerekiyordu olarak için yanıp sönen bitirdiğinde

cevap

4

Davranış aynıdır. Bunun bir hata olduğunu düşünmüyorum. Bunu düşünürseniz, FLASHW_STOP kullandığınızda, yanıp sönme aslında durur, ancak yanıp sönme noktası kullanıcının dikkatini çekmektir. Düğme hala renklidir çünkü kullanıcı hala aşağı bakmamış ve numaralı pencereyi dikkatle görüntülemeye çalışmıştır. Butonu renkli tutmak bu bilgiyi saklar.

0

Geç yanıt için özür dilerim, ofis dışında kaldım. Bu beklenen bir işlevsellik söz

Ben en azından bir sıfırlama olması gerektiğini, o kadar kullanışlı olmadığını düşünüyorum.

Ben şimdi sadece FLASHW_ALL | FLASHW_TIMERNOFG kombinasyonunu kullanarak düzelttim.

Btw, cevaplarınızı oranlandıramazsınız, henüz yeterli sayıda değil.

3

İşte bir hata var:

fInfo.uCount = UInt32.MaxValue;

FLASHW_STOP parametresi ile çağırarak zaman sıfıra fInfo.uCount ayarlamalısınız. Görev çubuğu düğmesi etkinken durmayı denediğinizde, aktif kalır. Bunun eski bir yazı olduğunu biliyorum http://msdn.microsoft.com/en-us/library/windows/desktop/ms679348(v=vs.85).aspx

ancak diğer insanlar oruç bu sorunu çözmek için yardımcı olabilir:

Burada tanımsız davranış hakkında bir not kontrol edebilirsiniz.

0

Yanıp sönmeyi durdurmak için uCount öğesini 0 olarak ayarlamanız yeterlidir.

+0

Cevabınıza biraz açıklama ekleyin. – Sandeep