2009-05-09 15 views
10

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

+0

आप एक प्रणाली विस्तृत संदेश हुक सेट करना होगा। [यहां एक ट्यूटोरियल है] (http://www.codeguru.com/cpp/w-p/system/misc/article.php/c5685)। –

उत्तर

11

आपको उन प्रक्रियाओं में अपना स्वयं का कोड इंजेक्ट करने की आवश्यकता है, जिनके बारे में आप संदेश को अवरुद्ध करना चाहते हैं। सौभाग्य से, SetWindowsHookEx() यह काफी आसान बनाता है, हालांकि आपको पहले कुछ परेशानी हो सकती है अगर आपने इसे अभी तक प्रक्रिया में शामिल करने के लिए उपयोग किया है।

मैं इस विषय पर दो उत्कृष्ट लेख की सिफारिश कर सकते हैं:

  1. यूसुफ Newcomber के Hooks and DLLs
  2. रॉबर्ट कस्टर के Three Ways to Inject Your Code into Another Process
7

यदि WH_GETMESSAGE पोस्ट किए गए संदेश को यह नहीं देखा जाएगा तो उसे नहीं देखा जाएगा। आपको WH_CALLWNDPROC की आवश्यकता है। यदि आप प्रक्रियाओं में काम कर रहे हैं तो आपको एक डीएलएल में सिस्टम-व्यापी हुक की आवश्यकता होगी। आप उल्लेख नहीं करते कि आपने SetWindowsHookEx को कैसे बुलाया है, इसलिए मुझे नहीं पता कि आपकी हुकिंग विफल रही है क्योंकि यह वैश्विक नहीं था, या क्योंकि जिस संदेश को आप ढूंढ रहे थे वह भेजा गया था।

यदि आपने पहले सिस्टम-व्यापी हुक के साथ काम नहीं किया है, तो मेरे पास मेरी वेबसाइट here पर सिस्टम-व्यापी हुक का एक उदाहरण है। यह एक कीबोर्ड हुक है, लेकिन सिद्धांत वही है।

अगर मैं अनजाने में यहां बात कर रहा हूं तो मुझे रोकें - आपका प्रश्न इतना छोटा था कि मैं आपकी विशेषज्ञता स्तर का अनुमान नहीं लगा सकता। लेकिन हुक के साथ घूमते हुए कुछ अनुभव दर्शाता है ...

+1

क्षमा करें, मुझे और अधिक जानकारी प्रदान करनी चाहिए थी। मुझे संदेशों को पढ़ने के लिए WH_CALLWNDPROC मिला, लेकिन मैं इसका उपयोग कर कतार से संदेश कैसे हटा सकता हूं? मैं कुछ संदेशों को लक्षित विंडो तक पहुंचने से रोकना चाहता हूं। –

+0

फिर संदेश को CallNextHookEx –

+0

पर पास न करें इससे कोई फर्क नहीं पड़ता कि मैं CallNextHookEx को कॉल करता हूं या नहीं, संदेश हमेशा लक्ष्य विंडो तक पहुंचता है। :( –

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

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