2010-06-09 7 views
6

कोई भी सलाह दे सकता है कि कैसे डिफ़ॉल्ट रूप से डिफ़ॉल्ट विंडोज एक्सपी कोड पेज को बदलना है (मैं इसे डेल्फी से कर रहा हूं)? (यह नियंत्रण कक्ष -> क्षेत्रीय सेटिंग्स -> गैर-यूनिकोड अनुप्रयोगों के लिए भाषा में जाने के बराबर होगा)।विंडोज एक्सपी में प्रोग्रामेटिक रूप से डिफ़ॉल्ट कोड पेज बदलें? (डेल्फी से)

इस मामले में, मैं चीनी (पीआरसी) करने के लिए स्विच और इतने निम्न रजिस्ट्री तार करने के लिए लिख रहा हूँ हैं: HKLM \ SYSTEM \ CurrentControlSet \ Control \ NLS \ codepage \ एसीपी = 936 MACCP = 10008 OEMCP = 936

(जो नियंत्रण कक्ष में गैर-यूनिकोड कोडपृष्ठ ड्रॉप डाउन को बदलता है)। एक और सेटिंग होनी चाहिए जिसे मुझे बदलने की ज़रूरत है - और मैं खुद रजिस्ट्री को लिखने के बजाय एक विन एपीआई कॉल (यदि उपलब्ध हो) का उपयोग करना पसंद करूंगा।

मैं भी कोई लाभ नहीं हुआ HKLM \ SYSTEM \ CurrentControlSet की स्थापना \ नियंत्रण \ NLS \ भाषा \ डिफ़ॉल्ट = 0804 (चीनी पीआरसी) की कोशिश की है।

मैं बदलने के लिए नहीं करना चाहती 'स्थान' से प्रति यह भी समय/दिनांक सेटिंग, विभाजक, आदि आदि परिवर्तन होगा, क्योंकि

इसका कारण यह है कि मैं एक एएनएसआई अनुप्रयोग है कि करने की जरूरत का उपयोग कर रहा चीनी वर्ण प्रस्तुत करें, और मैं स्वचालित रूप से सिस्टम को अक्षर दिखाने के लिए एक उपकरण लिख रहा हूं (यूआई के अन्य पहलुओं को छोड़कर)।

धन्यवाद!

डंकन

उत्तर

8

केवल समय इस उचित होगा यदि आप जहां और कुछ नहीं प्रणाली पर चलेगा किओस्क प्रकार आवेदन लिख रहे है। वह परिवर्तन सिस्टम पर हर दूसरे एप्लिकेशन को प्रभावित करेगा।

तुम सिर्फ पात्रों रेंडर करने के लिए की जरूरत है और उन्हें Windows APIs के डब्ल्यू संस्करणों सीधे कॉल के बजाय TCanvas तरीकों के माध्यम से जा रहा द्वारा एक WideString में प्राप्त कर सकते हैं तो आप उन्हें डेल्फी के पुराने संस्करणों में प्रस्तुत करना सकता है। यही है, DrawTextW या ExtTextOutW पर TCanvas.TextOut के बजाय कॉल करें और यह यूनिकोड वर्णों को सिस्टम के एएनएसआई कोडपेज में परिवर्तित किए बिना खींच देगा।

एक और पूरा विकल्प TMS Unicode Component Pack है। यह डेल्फी 6-2007 में यूनिकोड-सक्षम अनुप्रयोगों का समर्थन करने का समर्थन करता है, और आपके लिए डब्ल्यू फ़ंक्शन को कॉल करने में संभालता है। यह अच्छी तरह से काम करता है, और आप सामान्य रूप से टीसीएनवास या कैप्शन/टेक्स्ट गुणों का उपयोग कर सकते हैं .; केवल अंतर यह है कि गुण सभी वाइडस्ट्रिंग्स हैं। वह मूल रूप से टीएनटी यूनिकोड कंट्रोल पैक था, और उसमें here उपलब्ध एक पुराना, असमर्थित संस्करण है।

अंत में, आप केवल अपने आवेदन के लिए एएनएसआई कोडपेज बदलने के लिए माइक्रोसॉफ्ट की AppLocale उपयोगिता का उपयोग कर सकते हैं। इसे बैच स्क्रिप्ट here से कॉल करने के विवरण हैं, बिना पैग here के बिना इसे चलाने के लिए एक पैच, और SBAppLocale नामक एक कमांड लाइन क्लोन। यह काम करता है, लेकिन यह एक हैक है, और अन्य विकल्प बेहतर दीर्घकालिक हैं।

+0

क्रेग - हाँ, यह एक कंसोल एप्लिकेशन है जहां हमारा सॉफ्टवेयर पीसी पर चलने वाला एकमात्र दृश्यमान एप्लिकेशन है (विंडोज़ खोल के अलावा)। प्रश्न में एएनएसआई सॉफ्टवेयर पहले ही लिखा जा चुका है और मैं इसे बदल नहीं सकता (इस स्थिति के लिए)। मैं सिर्फ विंडोज कोडपेज स्विच करने के लिए एक अलग उपयोगिता लिख ​​रहा हूं। ऐप्पलोकेल अच्छा दिखता है।मुझे अभी भी लगता है कि गैर-यूनिकोड कोड पेज को स्विच करने का सबसे अच्छा समाधान है - लेकिन मैं नियंत्रण कक्ष -> क्षेत्रीय सेटिंग्स में ड्रॉपडाउन विकल्प मैन्युअल रूप से क्लिक किए बिना इसे कैसे करना है, इस पर स्टंप कर रहा हूं। किसी भी तरह से, समाधान की पर्याप्तता के लिए बहुत धन्यवाद! – Duncan

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