के लिए गंतव्य प्रिंटर को प्रोग्रामेटिक रूप से बदलना मैं एक बहुत ही सरल HTML दस्तावेज़ मुद्रित करने के लिए एक अदृश्य WebBrowser नियंत्रण का उपयोग करने का प्रयास कर रहा हूं। हमारे आवेदन के लिए आवश्यक है कि हम इस तरह के कई दस्तावेजों को प्रिंट करने में सक्षम होंगे, और वे सभी अलग-अलग प्रिंटर को भेजे जा सकते हैं। दुर्भाग्य से, मैं आउटपुट को सही प्रिंटर पर जाने में बहुत सफल नहीं रहा हूं।WinForms WebBrowser नियंत्रण
जिस तरह से यह अभी काम करता है वह यह है कि दस्तावेज़ मुद्रित करने से पहले, एप्लिकेशन निर्धारित करता है कि कौन सा प्रिंटर इसे प्राप्त करना है, और तदनुसार डिफ़ॉल्ट प्रिंटर सेट करता है। ऐसा करने के लिए यह WinSpool.drv से आयातित SetDefaultPrinter() का उपयोग करता है। यदि मैं डीबग मोड में कोड को चलाता हूं तो मैं स्पष्ट रूप से देख सकता हूं कि डिफ़ॉल्ट प्रिंटर बदलता है (और यह परिवर्तन नियंत्रण कक्ष UI में दिखाई देता है), लेकिन WebBrowser अभी भी मूल डिफ़ॉल्ट प्रिंटर का उपयोग करने पर जोर देता है।
एमएसडीएन दस्तावेज, जो मैंने देखा है, वास्तव में इस परिदृश्य के लिए समाधान प्रदान नहीं करता है। मैं कुछ प्रोग्राम की सराहना करता हूं कि मैं इस प्रोग्राम को कैसे पूरा कर सकता हूं।
: यदि आप मेरा उत्तर स्वीकार किए जाते हैं, लेकिन मैं के बारे में 6 अलग सुझाव दिए। आप किस समाधान के साथ गए थे: किसने आपके लिए काम किया? – ChrisW
@ChrisW: इस बारे में स्पष्ट नहीं होने के लिए खेद है। ActiveX एपीआई का उपयोग करने से अंततः समस्या हल हो गई। असल में, मैं WebBrowser.ActiveXInstance ऑब्जेक्ट को पकड़ता हूं, PrintTemplateTeardown ईवेंट के लिए एक हैंडलर पंजीकृत करता हूं और मुद्रित होने पर विचार करने से पहले इसे होने का इंतजार करता हूं। दिलचस्प बात यह है कि हमने प्रबंधित वेबब्रोसर रैपर नियंत्रण के साथ हमारे सभी प्रिंट गंतव्य मुद्दों का समाधान किया। आपकी सलाह के लिए धन्यवाद! –