2010-07-15 13 views
5

विंडोज हुक आपको अन्य प्रक्रियाओं के अंदर पोक करने की अनुमति देता है और कभी-कभी अपने व्यवहार को बदल देता है।मैक ओएस एक्स के लिए SetWindowsHookEx?

मैक ओएस एक्स के लिए ऐसी कोई चीज है?

धन्यवाद!

उत्तर

4

SetWindowsHookEx अर्थ है कि आप एक साझा पुस्तकालय/एक प्लगइन इसे करने के लिए लोड के अंदर से एक ऐप्लिकेशन का कोड बदलने में, और अधिक जैसे पुराने InputManager हैक है।

किसी अन्य प्रक्रिया के लिए तैयार किए गए कोड इंजेक्टर के लिए SIMBL देखें। उद्देश्य-सी कक्षाओं के लिए, आपको method swizzling का उपयोग करने की आवश्यकता है। मैंने सी फंक्शंस/सी ++ कक्षाओं को खुद को बदलने की कोशिश नहीं की है, लेकिन निश्चित रूप से इसे mach_override का उपयोग करके किया जा सकता है। this blog post भी देखें।

लेकिन आमतौर पर यदि आप एक जीयूआई ऐप को संशोधित करना चाहते हैं, तो उद्देश्य-सी कक्षाओं में टैप करना पर्याप्त होगा।

0

क्वार्ट्ज इवेंट टैप कुछ प्रतिबंधों के अधीन, कीस्ट्रोक और माउस क्लिक जैसे निम्न-स्तर की घटनाओं की निगरानी और संशोधित कर सकते हैं। क्या आप इसके बारे में और बता सकते हैं कि आप क्या करना चाहते हैं?

+0

मान लें कि मैं फ़ंक्शन को हुक करना चाहता था जो asdf.dylib लोड करता है। विचारधारा DYLD_INSERT_LIBRARIES चाल का उपयोग किये बिना, asdf.dylib के अपने स्वयं के अनुकूलित संस्करण को लोड करने के लिए किसी एप्लिकेशन को मजबूर करना है। – karlphillip

0

आप क्या हासिल करने की कोशिश कर रहे हैं, विशेष रूप से? क्या आप समझा सकते हैं कि आप मैक ओएस एक्स SetWindowsHookEx() के बराबर क्यों चाहते हैं? (संक्षिप्त उत्तर: कोई नहीं है। मध्यम उत्तर: विंडोज़ पर SetWindowsHookEx() के साथ आप जो कुछ भी कर सकते हैं, उसके बारे में कुछ अन्य, ओओ रास्ते में मैक ओएस एक्स पर किया जा सकता है।)

+0

विंडोज़ पर 'SetWindowsHookEx' आपको ** अन्य ** प्रक्रियाओं से ईवेंट प्राप्त करने में मदद कर सकता है। खिड़की बंद करने के रूप में, खिड़की अधिकतम ... आदि। क्या आप वाकई मैक ओएस एक्स पर ऐसा कर सकते हैं? –

+0

यह एक बहुत पुराने प्रश्न का एक बहुत पुराना जवाब है। :) मैं कह रहा था कि, अगर हम समस्या को जानते थे तो मूल डेवलपर हल करने की कोशिश कर रहा था, तो हम वैकल्पिक दृष्टिकोण की सिफारिश कर सकते थे। –