2011-12-26 21 views
9

मुझे नहीं पता कि विंडो सिस्टम हुक "सिस्टम स्तर" पर कैसे काम करता है। MSDN केवल छू लेती है क्या बहुत संक्षेप में चल रहा है:विंडो हुक - वे कैसे काम करते हैं?

एक हुक प्रणाली संदेश हैंडलिंग तंत्र में एक बिंदु है जहां एक आवेदन एक सबरूटीन स्थापित कर सकते हैं संदेशों के प्रणाली और प्रक्रिया में कुछ विशेष प्रकार में संदेश यातायात की निगरानी के लिए है लक्ष्य विंडो प्रक्रिया तक पहुंचने से पहले। ,

enter image description here

से पहले प्रत्येक संदेश एक खिड़की के लिए संदेश कतार में जोड़ा जाता है, यह पहली वैश्विक/स्थानीय हुक करने के लिए संदेश भेज देंगे:

मेरे श्रेष्ठ अनुमान नीचे की तरह कुछ है जो कुछ हुक प्रक्रियाओं के आधार पर कुछ कर सकता है। सभी वैश्विक हुक और स्थानीय हुक के बाद, संदेश अंततः विंडो संदेश कतार में जोड़ा गया है।

हालांकि, MSDN का कहना है कि हुक के कुछ प्रकार के लिए, यह निगरानी करेंगे events, notifications आदि

एक उदाहरण WH_MOUSE_LL हुक है:

एक हुक प्रक्रिया है कि कम पर नज़र रखता है इंस्टॉल स्तर माउस इनपुट घटनाएं। अधिक जानकारी के लिए, LowLevelMouseProc हुक प्रक्रिया देखें।

जब वे events कहते हैं, तो क्या हम विंडो संदेशों की बात कर रहे हैं, या क्या उनका मतलब कुछ और है?

क्या मैं सब गलत हूँ?

+8

एक फ्रीहैंड आरेख की छवि के लिए बोनस शैली बिंदु। – rkb

+1

यहां एक छोटा सा स्पष्टीकरण है http://b.1asphost.com/mmbaig/Tutorials/Windows_Hooks.html –

+2

कई हुक संदेश आधारित हैं। लेकिन जिस हुक के बारे में आप बात कर रहे हैं, वह वास्तव में "घटना" से ट्रिगर नहीं होता है। यह सिर्फ * पहले चलता है * विंडोज़ संदेश बनाता है और इसे विंडो के संदेश कतार में रखता है जिसमें फोकस होता है। WH_MOUSE की तुलना करें, एक ग्लोबल हुक जो एक ऐप कॉल/PeekMessage को चलाता है और संदेश कतार से माउस संदेश पुनर्प्राप्त करने वाला है। इस प्रकार वास्तव में एक संदेश द्वारा ट्रिगर किया गया। –

उत्तर

1

हां, यह विंडोज संदेशों के लिए एक तंत्र है, आप लक्ष्य विंडो प्रक्रिया (संदेश लूप) तक पहुंचने से पहले इस डेटा (संदेश) को संसाधित कर सकते हैं।

यदि आप अन्य प्रक्रिया खिड़कियों को हुक करना चाहते हैं तो आप इसे डीएलएल में कर सकते हैं, और अन्य प्रक्रिया में अपनी लाइब्रेरी को इंजेक्ट करने के लिए डीएलएल इंजेक्शन का उपयोग कर सकते हैं।

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