2008-12-04 20 views
6

क्या रनटाइम पर निष्पादन योग्य के लिए संसाधनों को संपादित करना संभव है? यदि हां, तो कैसे? यदि नहीं, तो क्या कोई और प्रोग्राम है जिसका उपयोग संसाधनों को संशोधित करने के लिए आसानी से किया जा सकता है?C++ रनटाइम पर संसाधनों को संशोधित करें

धन्यवाद, डेरेक।

+0

क्या आपका मतलब विंडोज संसाधन है? यह मंच विशिष्ट है, हां? –

उत्तर

0

हां, यह संभव है, हालांकि विशेष रूप से आसान नहीं है। इसे मूल रूप से एक संसाधन संकलक लिखने की आवश्यकता होती है (कम से कम उन संसाधन प्रकारों के लिए जिन्हें आप संशोधित करना चाहते हैं)।

उदाहरण के लिए मैंने एक बार एक मेनू कंपाइलर लिखा था जिसने रन-टाइम पर डेटाबेस से अपना इनपुट लिया (तब परिणाम को वापस डीबी में सहेजा गया)। यदि स्रोत तालिका अपरिवर्तित थी तो मौजूदा संसाधन का उपयोग किया गया था, अन्यथा इसे पुनर्निर्मित किया गया था।

मेनू संसाधनों (और मुझे लगता है कि संवाद) के मामले में मुश्किल बात यह है कि कुछ सदस्य ध्वज सेटिंग्स के साथ-साथ सख्त संरेखण आवश्यकताओं के आधार पर केवल उपस्थित होते हैं।

आपके .exe में पहले से मौजूद संसाधनों को संशोधित करने के मामले में आपको संसाधन डेटा को मेमोरी बफर में कॉपी करने की आवश्यकता होगी (यदि आप नए तत्व जोड़ रहे हैं तो अतिरिक्त स्थान उपलब्ध है) (FindResource, LockResource, मेमोरी कॉपी का उपयोग करके फिर अनलॉक संसाधन)।

परिवर्तन करने के बाद आप अप्रत्यक्ष निर्माण कार्यों में से एक का उपयोग करें (यानी CreateMenuIndirect) और बफर का पता पास करें।

संसाधन एपीआई इस तरह के बफर को एप्लिकेशन बाइनरी में वापस लिखने की अनुमति देता है लेकिन यदि आप कोड हस्ताक्षर का उपयोग करते हैं तो हस्ताक्षर तोड़ देगा इसलिए बहुत सावधान रहें। मुझे यह भी नहीं पता कि वह एपीआई वास्तव में चल रहे किसी प्रोग्राम के लिए काम करता है या नहीं।

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