2010-01-31 18 views
7

माइक्रोसॉफ्ट के पास .NET ढांचे में एक बहुत अच्छा विंडोज एपीआई रैपर शामिल है। यह Microsoft.Win32.UnsafeNativeMethods, Microsoft.Win32.SafeNativeMethods और Microsoft.Win32.NativeMethods में संग्रहित है .Unfortunately वे सुलभ है क्योंकि वे निजी रूप में घोषित कर रहे हैं नहीं कर रहे हैं। क्या उन्हें आसानी से एक्सेस करने का कोई तरीका है?माइक्रोसॉफ्ट.Win32.UnsafeNativeMethods तक पहुंच रहा है?

उत्तर

2

उन कक्षाओं में अधिकांश विधि परिभाषाएं (यदि सभी नहीं हैं) externDllImport गुणों के साथ घोषणाएं हैं जो पी/Invoke के माध्यम से विंडोज एपीआई में कार्यों का संदर्भ देती हैं। इससे कोई फर्क नहीं पड़ता कि ये घोषणाएं कहाँ रहती हैं। आप UnsafeNativeMethods या SafeNativeMethods नामक अपनी खुद की कक्षा बना सकते हैं और वहां उसी विंडोज एपीआई फ़ंक्शंस का जिक्र करते हुए घोषणाएं डाल सकते हैं। आपको pinvoke.net पर सी # के लिए कई विंडोज एपीआई कार्यों के हस्ताक्षर मिलेंगे।

+0

चेक करें जो उम्र लेता है। मैं एक वर्ग में सभी कार्यों तक पहुंच बनाना चाहता हूं। –

+0

जैसा कि @ एसएलक्स ने लिखा है, कई एपीआई फ़ंक्शंस पहले ही .NET Framework में प्रबंधित कक्षाओं के रूप में सामने आए हैं, उदाहरण के लिए, रजिस्ट्री एक्सेस, विंडोज़, जीडीआई। आमतौर पर किसी वेबसाइट से सी # फ़ाइल में कुछ विधि हस्ताक्षर कॉपी करने में इतना समय नहीं लगता है। यदि आप विंडोज एपीआई के आधार पर भारी हैं और .NET Framework का कोई उपयोग नहीं करते हैं, तो अधिक उपयुक्त प्रोग्रामिंग भाषा का उपयोग क्यों न करें? – dtb

+1

सी ++ में एक अच्छा यूआई बनाना एक सिरदर्द है। (आईएमएचओ) –

1

इन कक्षाओं में निहित अधिकांश कार्यक्षमता नेट फ्रेमवर्क द्वारा स्वयं प्रकट होती है; आपको एपीआई कॉल करने से पहले खोजना चाहिए (या यहां पूछना चाहिए)।

अपने प्रश्न का उत्तर देने के लिए, नहीं।
सबसे अच्छा आप उन्हें प्रतिबिंबक या संदर्भ स्रोत से कॉपी करना है।

+1

आप कॉपीराइट उल्लंघनों की सिफारिश कर रहे हैं? – dtb

+0

कॉपीराइट उल्लंघन नहीं है जब ऐसा करने का केवल एक सही तरीका है। – Josh

+1

@ निक ब्रूक्स: "ओपन सोर्स" एक अच्छी तरह से परिभाषित शब्द है। और यह व्यक्तिगत या अकादमिक उद्देश्यों के लिए स्रोत कोड देखने के लिए लाइसेंस पर लागू नहीं होता है (जिसके अंतर्गत संदर्भ स्रोत लाइसेंस प्राप्त है)। – dtb

1

इसके लायक होने के लिए मैंने हमेशा सोचा था कि पहले से ही dllImport'ed स्थिर विधियों के साथ kernel32.interop.dll आदि होना चाहिए था। लेकिन मैंने एक आवश्यक आधार पर अपना खुद का निर्माण करने का प्रयास किया है। पिछले कुछ वर्षों में मैंने पाया है कि मैं शायद ही कभी उनमें से कुछ मुट्ठी भर से अधिक उपयोग करता हूं लेकिन गधे में ऐसा दर्द होता है जब मुझे एक एपीआई की आवश्यकता होती है जिसे मैंने अभी तक आयात नहीं किया है।

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