c++ - क्या किसी एप्लिकेशन को प्राप्त होने वाले स्पर्श संदेश(WM_POINTERDOWN आदि) को निकालना संभव है?



winapi windows-8 (1)

समाधान 1:

WH_GETMESSAGE संदेशों को हटाने या संशोधित करने के लिए डिज़ाइन नहीं किया गया है, केवल उन्हें मॉनीटर करने के लिए दुर्भाग्य से, मार्क के वैकल्पिक समाधान - WH_KEYBOARD_LL और WH_MOUSE_LL का उपयोग करते हुए - समस्या को हल करने के लिए भी नहीं दिखाई दिया (क्योंकि WH_KEYBOARD_LL एक माउस संदेश की श्रेणी में नहीं आता है)। क्षमा करें, निशान!

मैं WH_CALLWNDPROC को इंगित करना चाहता हूं, जो उनके इच्छित विंडो से पहले संदेश प्राप्त करता है। यह संदेशों को संशोधित करने का स्वीकार्य तरीका लगता है।

समाधान 2:

यह संभव है कि लक्ष्य खिड़की को WM_POINTER... संदेशों को बिल्कुल परवाह नहीं है! यह रॉ इनपुट एपीआई के माध्यम से टच इनपुट का पता लगा सकता है, जैसे कि यह डेमोWM_INPUT संदेशों के लिए आंखों को बाहर रखने की कोशिश करें।

नोट 1: कच्चे इनपुट संदेशों को हटाया जा सकता है, लेकिन संशोधित या बनाया नहीं जा सकता

नोट 2: मुझे पूरी तरह से यकीन नहीं है, लेकिन WM_INPUT संदेश स्मृति रिसाव पैदा कर सकते हैं क्योंकि यह वस्तु वास्तव में एक बड़े सूचक है बस के मामले में, अपने हुक प्रक्रिया में संदेशों को संभाल।

https://code.i-harness.com

मैंने सफलतापूर्वक SetWindowsHookEx साथ एक WH_GETMESSAGE हुक इंस्टॉल किया है और मैं WM_POINTERDOWN , WM_POINTERUP आदि संदेश देख सकता हूं जो एप्लिकेशन प्राप्त करता है। (यह विंडोज़ 8.1 पर चलने वाला 32 बिट डेस्कटॉप अनुप्रयोग है।)

अब, मैं केवल उन संदेशों को देखना नहीं चाहता, लेकिन मैं उनमें से कुछ को हटाना चाहता हूं।

GetMsgProc के लिए दस्तावेज़ीकरण कहते हैं:

GetMsgProc हुक प्रक्रिया की जांच या संदेश को संशोधित कर सकते हैं। हुक प्रक्रिया को सिस्टम पर नियंत्रण रिटर्न के बाद, GetMessage या PeekMessage फ़ंक्शन किसी भी संशोधनों के साथ संदेश को वापस देता है, जिसे मूलतः इसे कहा जाता है

WM_KEYUP संदेशों के साथ यह ठीक काम करने लगता है। मैं हुक में WM_NULL को संदेश सेट कर सकता हूं, और मुख्य ईवेंट गायब हो जाएगा।

WM_POINTER... साथ संदेश, हालांकि, यह काम करने के लिए प्रतीत नहीं होता। आवेदन अभी भी संदेश (डीबगर में मान्य) प्राप्त करता है।

शायद इस तरह के संदेशों को फ़िल्टर / निकालने का कोई अन्य तरीका है?

संपादित करें: इसे अनधिकृत तृतीय-पक्ष एप्लिकेशन (इसलिए हुक का उपयोग) के साथ काम करना है।

अपडेट: मैं हुक के भीतर आक्रामक PeekMessage को कॉल करके स्पर्श करने से क्लिक ईवेंट को रोकने में कामयाब रहा (संभवतः लंबे समय में कोई अच्छा विचार नहीं)। हालांकि, मैं अब भी स्पर्श द्वारा स्क्रॉलिंग को रोक नहीं सकता।