2009-10-21 8 views
8

हर कुछ महीनों में मुझे खुद को Win32 से Win32 को कॉल करने की आवश्यकता होती है। हालांकि मैंने इसे एक दर्जन बार किया है, इसलिए मैं आमतौर पर सटीक machinations भूल गया है, इसलिए मैं वेब या पुराने कोड के चारों ओर पोक करता हूं और पता लगाता हूं कि मुझे क्या DllImport कथन चाहिए, आदि।क्या Win32 से Win32 को कॉल करने के लिए कोई और दर्द रहित तरीका है?

क्या मैं अकेला हूं?

वहाँ एक मंजूर "Win32" वर्ग पूरे Win32 एपीआई के लिए अपेक्षित घोषणाओं है कि है? ऐसा लगता है कि होना चाहिए। शायद मुझे कुछ याद आ रही है।

+3

आप अकेले नहीं हैं। +1 – spender

+1

निश्चित रूप से अकेले नहीं। +1 –

+1

pinvoke.net महान है लेकिन संदर्भ के लिए एक एकल विधानसभा तो अच्छा होगा ... –

उत्तर

8

आप http://www.pinvoke.net उपयोगी मिल सकता है।

इसके अलावा, सामान्य Win32 फ़ंक्शंस के लिए, आप P/Invoke Interop Assistant को आजमा सकते हैं।

+1

PInvoke इंटरऑप सहायक का भी सी कोड को सीधे उचित हस्ताक्षर और कार्यों में अनुवाद करने के लिए उपयोग किया जा सकता है। – JaredPar

1

कोई मंजूर Win32 वर्ग नहीं है, लेकिन http://www.pinvoke.net इन बातों के लिए एक महान केंद्रीय संसाधन है।

1

यह एक खुला स्रोत परियोजना के लिए एक बहुत अच्छा विचार की तरह लगता है।

/em टोपी सोच पर डालता है, और की रन बाहर pinvoke.net को

0

आप Reflector और Win32Native के लिए खोज का उपयोग कर सकते हैं। इसमें परिभाषाओं का एक गुच्छा है जिसे आप PInvoking के लिए उपयोग कर सकते हैं।

1

सही DllImport कथन प्राप्त करना आसान है जैसे हर कोई कह रहा है, लेकिन आसानी से उपयोग करने के लिए मैं आम तौर पर Win32 फ़ंक्शंस को सी # कक्षाओं में जरूरी करता हूं और मेरी कोर सहायक असेंबली में संकलित करता हूं। तो अगली बार जब मैं सिर्फ असेंबली का संदर्भ देता हूं। तो अगर मुझे कुछ Win32 फ़ंक्शन की ज़रूरत है, तो संभावना है कि यह पहले से ही मेरे सहायक lib में है यदि मैं इसे जोड़ता हूं।

इसके अलावा मैं रिसेप्शन कोड को अपवादों पर मैप करता हूं, यानी अगर एचआरएसल्ट शून्य नहीं है तो मैंने अपवाद फेंक दिया है, इसलिए मेरे सी # ऐप्स को HResult के बारे में जानने की आवश्यकता नहीं है या कभी भी कोड वापस नहीं करना है।

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