2011-08-29 17 views
6

मैं वीएस 2010 द्वारा उत्पन्न एक साधारण फ़ॉर्म का उपयोग कर रहा हूं जिसमें 2 बटन हैं, प्रारंभ करें और रोकें। SetWindowsHookEx का उपयोग करके WH_MOUSE_LL ट्रिगर्स प्रारंभ करें, और हुक को रोकें। हुक ठीक काम करता है और मैं मध्य माउस बटन को "प्रतिस्थापित" करने के लिए मैंग करता हूं डबल क्लिक के साथ क्लिक करता हूं, मेरे पास एकमात्र समस्या है जो फॉर्म के न्यूनतम/अधिकतम/बंद बटन पर क्लिक कर रही है, ऐसा लगता है कि "घटना दौड़" उपरोक्त वर्णित बटन द्वारा बुलाए गए हुक और घटनाओं के बीच। यह इस तथ्य पर प्रतिबिंबित करता है कि जब आप उन बटनों में से किसी एक को दबाते हैं तो यह कुछ समय के लिए "दबाया जाता है" इससे पहले कि यह क्रिया पूरी करता है (जैसे फॉर्म कम करता है)। जब मैं फॉर्म पर राइट क्लिक करता हूं और उन कार्यों में से एक का चयन करता हूं तो यह तुरंत प्रतिक्रिया देता है जब मैं हुक को रोकता हूं और ऊपर वर्णित बटनों में से एक दबाता हूं। क्या किसी को इस तरह का व्यवहार सामना करना पड़ा है?सी # निम्न स्तर के माउस हुक और फॉर्म इवेंट हैंडलिंग

+3

मेरा पहला वृत्ति यह है कि आप शायद नौकरी के लिए गलत उपकरण का उपयोग कर रहे हैं - मैं कई परिस्थितियों के बारे में नहीं सोच सकता जब आपको विंडोज हुक का उपयोग करने की आवश्यकता हो। शायद अगर आप उस समस्या पर वापस जा सकते हैं जिससे आपको इस समाधान को लागू किया गया, और इसके बजाय एक प्रश्न पोस्ट किया गया? –

+1

नमस्ते, जहां तक ​​मुझे पता है और मैंने इस विधि के आने से पहले काफी शोध किया है कि यदि मैं अपने सामान्य माउस को डबल क्लिक करने के लिए डबल क्लिक करना चाहता हूं, तो जब मैं मध्य माउस बटन पर क्लिक करता हूं तो मध्य क्लिक पर "अवरोध" करना होता है और उसी पर दो बाएं क्लिक अनुकरण करना होता है एक्स, माउस का वाई और यदि मैं चाहता हूं कि यह मेरा ऐप तब भी काम करे। फोकस या कम से कम (या सिस्टम ट्रे पर) हुक एकमात्र तरीका नहीं है। किसी भी तरह से मैं अधिक सी/सी ++ प्रोग्रामर हूं, मैं सिर्फ सी # का उपयोग करना चाहता था क्योंकि जीयूआई बनाने की सादगी। – Alex

+1

@Alex - आपका शोध आपको गलत निष्कर्ष पर ले जाता है। बस मध्य माउस बटन पर कब्जा करें और एक ही घटना को डबल क्लिक माउस ईवेंट के रूप में करें (जो वास्तव में केवल एक क्लिक ईवेंट है)। इसके अलावा सभी चूहों के बीच माउस बटन नहीं है, इसलिए इसके बारे में सावधान रहें। –

उत्तर

2

मैंने इससे पहले भी अनुभव किया है। मुझे सटीक कारण के बारे में निश्चित नहीं है, लेकिन मैंने हमेशा घटनाओं को सुनकर समस्या हल कर ली है जब माउस प्रवेश करता है और फॉर्म, विंडो, जो भी क्लाइंट क्षेत्र में जाता है। आप उन घटनाओं का उपयोग माउस को हुक और अनचेक करने के लिए कर सकते हैं, और फिर आपको सामान्य व्यवहार मिल जाएगा।

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