एक साधारण सवाल होना चाहिए, लेकिन दस्तावेज खोजना मुझे पागल कर रहा है। मान लीजिए कि मेरे पास एक कोक्लास या इंटरफ़ेस के लिए आईटीपीइन्फो पॉइंटर है। मैं उस वर्ग या इंटरफ़ेस का नाम कैसे प्राप्त करूं?इस प्रकार का नाम पाने के लिए मैं ITypeInfo पॉइंटर का उपयोग कैसे कर सकता हूं?
उत्तर
ठीक है। यह बहुत आसान हो गया। आपको ITypeInfo.GetDocumentation
विधि को सदस्य आईडी के साथ MEMBERID_NIL
(-1) पर सेट करने की आवश्यकता है। इसलिए जैसा:
CComBSTR typeName;
hr = typeInfo->GetDocumentation(MEMBERID_NIL, &typeName, NULL, NULL, NULL);
आप नेट में प्रोग्रामिंग कर रहे हैं, इसके बाद के संस्करण आसानी से Marshal.GetTypeInfoName
विधि द्वारा आप के लिए किया जाता है:
// using System.Runtime.InteropServices;
string typeName = Marshal.GetTypeInfoName(typeInfo);
संक्षिप्त उत्तर: आप ITypeInfo
का उपयोग नहीं कर सकते। आप Win32 ProgIDFromCLSID
API का उपयोग कर कक्षा की प्रोग आईडी प्राप्त कर सकते हैं। COM में अंतर्निहित सी ++ का नाम, COM इंटरफ़ेस या सह-वर्ग को लागू करने वाला विजुअल बेसिक या .NET क्लास व्यावहारिक रूप से व्यर्थ है। केवल इंटरफ़ेस आईडी, क्लास आईडी और प्रोग्रामैटिक आईडी का आपके सह-वर्ग के कार्यान्वयन के स्रोत कोड से परे कोई महत्व है: केवल इन्हें CoCreateInstance
एट अल और रनटाइम कास्टिंग QueryInterface
का उपयोग करके COM ऑब्जेक्ट को सक्रिय करने के लिए उपयोग किया जा सकता है।
खैर, मैं इस के लिए एक वैध कारण है (लेकिन शायद लगता है मैं नही)। वैसे भी, क्या आप वाकई असंभव हैं? ऐसा लगता है कि विभिन्न माइक्रोसॉफ्ट प्रकार लाइब्रेरी यूटिलिटीज इस जानकारी को गिनने में सक्षम हैं। वह यह कैसे करते हैं? –
ठीक है, प्रायः प्रोग आईडी को चुना जाता है ताकि यह सी ++ वर्ग के नाम के समान या समान हो - लेकिन यह केवल एक सम्मेलन है। अधिकांश प्रकार की लाइब्रेरी यूटिलिटीज या तो Windows रजिस्ट्री या .tlb फ़ाइलों में जानकारी की गणना करती है, जिनमें से सभी क्लास आईडी, इंटरफ़ेस आईडी और प्रोग आईडी के साथ विशेष रूप से सौदे करते हैं। आखिरकार यह आपके COM सर्वर DLL में आपके C++ वर्ग के साथ इन COM मानों को संबद्ध करने के लिए 'DllGetClassObject' के कार्यान्वयन के लिए पूरी तरह से नीचे है। –
- 1. मैं Django ऑब्जेक्ट का मॉडल का नाम या सामग्री प्रकार कैसे प्राप्त कर सकता हूं?
- 2. मैं इस एसिंक्रोनस विधि का नकल कैसे कर सकता हूं?
- 3. मैं इस फ्लास्क ऐप का परीक्षण कैसे कर सकता हूं?
- 4. मैं jquery का उपयोग कर इनपुट फ़ील्ड का नाम विशेषता कैसे सेट कर सकता हूं?
- 5. मैं इस पॉइंटर को getaddrinfo में कैसे संभाल सकता हूं?
- 6. मैं codebird.js ट्विटर लाइब्रेरी का उपयोग कैसे कर सकता हूं?
- 7. मैं अपने कस्टम uint128 प्रकार के लिए std :: हेक्स का उपयोग कैसे कर सकता हूं?
- 8. क्या मैं इस रचना को सरल बनाने के लिए मोनाड ट्रांसफार्मर का उपयोग कर सकता हूं?
- 9. कैसे .EXE का फ़ाइल नाम पाने के लिए
- 10. मैं केवल जावास्क्रिप्ट का उपयोग कर दस्तावेज़ के माइम-प्रकार को कैसे निर्धारित कर सकता हूं?
- 11. एक्सेस 2010 - इस सबफॉर्म के लिए मैं किस नियंत्रण नाम का उपयोग करता हूं?
- 12. मैं जावा में जावास्क्रिप्ट का उपयोग कैसे कर सकता हूं?
- 13. मैं वाईएक्स का उपयोग कर एक समेकित फ़ाइल के लिए आइकन कैसे सेट कर सकता हूं?
- 14. मैं एक कीवर्ड नाम के रूप में एक कीवर्ड का उपयोग कैसे कर सकता हूं?
- 15. मैं इस सरल jQuery का उपयोग कर HTML टेक्स्टफील्ड को कैसे अक्षम कर सकता हूं?
- 16. मैं jQuery का उपयोग कर इस फ्लैश प्रभाव को कैसे प्राप्त कर सकता हूं?
- 17. मैं पीओसीओ का उपयोग किसके लिए कर सकता हूं?
- 18. मैं टर्मिनल का उपयोग कर फ़ाइलों का नाम कैसे बदल सकता हूं?
- 19. मैं इकाई फ्रेमवर्क प्रकार प्रदाता कैसे रनटाइम कॉन्फ़िगरेशन फ़ाइल का उपयोग कर सकता हूं?
- 20. मैं एचएमवीसी आर्किटेक्चर का उपयोग किसके लिए कर सकता हूं?
- 21. नामस्थान या प्रकार के मामले में मैं स्ट्रिंग तर्क का उपयोग कैसे कर सकता हूं?
- 22. मैं पॉइंटर वेक्टर कैसे मुक्त कर सकता हूं?
- 23. जैक्सन एनोटेशन का उपयोग करके मैं इस JSON को क्रमबद्ध कैसे कर सकता हूं?
- 24. मैं global.asax से Server.MapPath() का उपयोग कैसे कर सकता हूं?
- 25. मैं wget -i का उपयोग कर फ़ाइल नाम कैसे डाउनलोड और सेट कर सकता हूं?
- 26. मैं जावास्क्रिप्ट में गोटो का उपयोग कैसे कर सकता हूं?
- 27. मैं नामस्थान और कक्षा के नाम के साथ विधि का नाम कैसे प्राप्त कर सकता हूं?
- 28. मैं कच्चे_इनपुट का उपयोग कैसे कर सकता हूं?
- 29. पर्ल में मॉड्यूल नाम के रूप में मैं चर का उपयोग कैसे कर सकता हूं?
- 30. मैं सी # में GetNextWindow() का उपयोग कैसे कर सकता हूं?
क्या आप वाकई सह-वर्ग से जुड़े [helpstring] विशेषता की सामग्री को वापस नहीं करते हैं? मुझे गलत साबित करने में खुशी है! –
इसके अलावा, एक COM सह-वर्ग का अंतर्निहित कार्यान्वयन किसी भी प्रकार का वर्ग भी नहीं हो सकता है (COM.c लिखने के उदाहरण के लिए http://www.codeproject.com/KB/COM/com_in_c1.aspx देखें सादा सी में वस्तु)। "कक्षा" की धारणा पूरी तरह से भाषा-निर्भर है और मुझे संदेह है कि आप इस जानकारी को प्राप्त करने के लिए GetDocumentation विधि पर भरोसा कर सकते हैं। –
याद रखें कि मेरा प्रश्न स्वचालन से निपट रहा है। यह COM के माध्यम से एक इंटरफ़ेस पर विधियों को कॉल करने की प्रक्रिया है और उन तरीकों के कार्यान्वयन से पूरी तरह से स्वतंत्र है। प्रश्न में कोक्लास और इंटरफेस ने मेटाडेटा (ITypeInfo के माध्यम से सुलभ) को जोड़ा है, और इसमें उनके नाम शामिल हैं। किसी भी मामले में, आपकी मदद के लिए धन्यवाद। मैं इसकी सराहना करता हूं! –