2012-05-23 9 views
16

दो के काम के बीच क्या अंतर है? WH_KEYBOARD_LLi read के लिए यह एक हुक प्रक्रिया स्थापित करता है जो निम्न-स्तर कीबोर्ड इनपुट ईवेंट पर नज़र रखता है। निम्न-स्तर कीबोर्ड ईवेंट का क्या अर्थ है?WH_KEYBOARD और WH_KEYBOARD_LL के बीच अंतर?

उत्तर

25

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

WH_KEYBOARD बहुत अलग तरीके से काम करता है, इसके लिए एक डीएलएल की आवश्यकता होती है जिसे सुरक्षित रूप से घुमावदार प्रक्रियाओं में इंजेक्शन दिया जा सकता है। जो इसे जाने के लिए कुख्यात रूप से मुश्किल बनाता है, प्रक्रिया को प्रभावित किए बिना डीएलएल इंजेक्शन करना आसान नहीं है। विशेष रूप से 64-बिट ऑपरेटिंग सिस्टम पर। न ही किसी अन्य प्रक्रिया को कीस्ट्रोक के बारे में जानने की आवश्यकता होने पर आपको इंटर-प्रोसेस संचार की देखभाल करनी पड़ सकती है। एक प्रमुख लॉगर की तरह।

WH_KEYBOARD का लाभ यह है कि इसकी कुंजीपटल स्थिति तक पहुंच है। विंडोज़ में एक प्रति-प्रक्रिया संपत्ति कौन सा है। सक्रिय कुंजीपटल लेआउट जैसे राज्य और संशोधक और मृत कुंजी की स्थिति एक बहुत बड़ा सौदा है जब आप हुक का उपयोग वर्चुअल कुंजी का अनुवाद करने के लिए स्वयं को टाइप करने के लिए करना चाहते हैं। आप किसी बाहरी प्रक्रिया से विश्वसनीय रूप से ToUnicodeEx() को कॉल नहीं कर सकते हैं।

आप उदाहरण कोड में बिना किसी बिल्ली को स्विंग नहीं कर सकते हैं, तो Google आपको बहुत कुछ देगा। तो अगर आप पहले कभी ऐसा हुक नहीं लिखा है तो कुछ ज्ञात काम का उपयोग करना सुनिश्चित करें, इससे बहुत दुख आएगा।

+0

_' "... एक हुक स्थापित करता है जिसके लिए कॉलबैक लागू किया जाना आवश्यक है ..." '_। _callback_ द्वारा आपका क्या मतलब है? –

+1

बहुत यकीन है कि पिछले प्रश्न में आपको पहले ही समझाया गया था। यदि यह अभी भी रहस्यमय है तो इस परियोजना को शेल्फ पर छोड़ने पर विचार करें जब तक कि आपके पास मूल रूप से मूल winapi और प्रोग्रामिंग के बारे में अधिक जानने के लिए समय न हो। हुक प्राप्त करना तुच्छ नहीं है। –

+0

मुझे सत्यापित करने दें, _ "इसका मतलब हुक श्रृंखला में अगली विधि को कॉल करना है"? _ –

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