2008-08-22 9 views
5

रखता है मैं एक मशीन को नियंत्रित करने वाला एक एप्लीकेशन विकसित कर रहा हूं।
जब मुझे मशीन से कोई त्रुटि प्राप्त होती है तो उपयोगकर्ताओं को सीधे इसे नोटिस करने में सक्षम होना चाहिए, एक तरीका है जो टास्कबार पर ट्रे को चमक रहा है। जब मशीन त्रुटि को साफ़ करती है तो ट्रे को चमकना बंद कर देना चाहिए।FlashWindowEx FLASHW_STOP अभी भी टास्कबार रंग

फ्लैशविंडोएक्स फ़ंक्शन का उपयोग करके एक छोटी परेशानी होती है, जब मैं खिड़की की चमक को साफ़ करता हूं, यह रहता है (मेरे मामले winXP) नारंगी (चमकती नहीं)।
Sample of status


    [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; 
     } 

मेरे मामले में मैं FLASHW_TRAY का उपयोग करें और FLASHW_STOP चमकती चमकती को रोकने के लिए शुरू करने के लिए।

क्या मैं कुछ गलत कर रहा हूं या यह WinXP का ज्ञात बग है और क्या इसके लिए कोई फिक्स है?

उत्तर

4

व्यवहार एक ही होता है जब एक खिड़की चमकती है जब तक यह माना जाता है: टास्कबार बटन रंग रहता है। मुझे नहीं लगता कि यह एक बग है। यदि आप इसके बारे में सोचते हैं, जब आप FLASHW_STOP का उपयोग करते हैं, तो फ्लैशिंग वास्तव में रुक जाती है, लेकिन चमकती हुई बात उपयोगकर्ता के ध्यान को प्राप्त करना है। बटन रंग रहता है क्योंकि उपयोगकर्ता ने अभी भी देखा नहीं है और खोजा है जो विंडो उसका ध्यान आकर्षित करने की कोशिश कर रही थी। रंगीन रंग को रखना उस जानकारी को उपलब्ध रखता है।

0

देर से प्रतिक्रिया के लिए खेद है, मैं कार्यालय से बाहर था।

यदि यह अपेक्षित कार्यक्षमता है तो मुझे लगता है कि यह इतना उपयोगी नहीं है, कम से कम एक रीसेट होना चाहिए।

मैंने इसे अभी FLASHW_ALL | FLASHW_TIMERNOFG संयोजन का उपयोग करके तय किया है।

बीटीडब्ल्यू, आपके उत्तरों को रेट नहीं कर सकता है, अभी तक पर्याप्त प्रतिनिधि नहीं है।

3

यहाँ एक त्रुटि है:

fInfo.uCount = UInt32.MaxValue;

जब FLASHW_STOP पैरामीटर के साथ बुला आप शून्य करने के लिए fInfo.uCount स्थापित करना चाहिए। अन्यथा जब आप टास्कबार बटन सक्रिय होने पर स्टॉप कॉल करने का प्रयास करते हैं तो यह सक्रिय रहेगा।

आप अपरिभाषित व्यवहार के बारे में यहाँ एक नोट की जांच कर सकते हैं: http://msdn.microsoft.com/en-us/library/windows/desktop/ms679348(v=vs.85).aspx

मुझे पता है कि एक पुराने पोस्ट है, लेकिन यह अन्य लोगों को तेजी से इस समस्या को हल करने में मदद कर सकते हैं।

0

फ़्लैशिंग को रोकने के लिए बस 0 पर यूकाउंट सेट करें।

+0

अपने उत्तर में कुछ स्पष्टीकरण जोड़ें। – Sandeep

संबंधित मुद्दे