2013-01-05 10 views
5

इस बारे में बहुत सारे धागे हैं लेकिन उनमें से कोई भी स्पष्ट नहीं था और मैंने वास्तव में भी सही काम करने की कोशिश नहीं की।वेब ब्राउज़र नियंत्रण का एक स्क्रीनशॉट प्राप्त करें?

संपूर्ण वेब ब्राउज़र नियंत्रण (यहां तक ​​कि जो स्क्रीन बंद है) की सामग्री प्राप्त करने के लिए कोड क्या है?

ऐसा लगता है कि वे क्या किया: सुनिश्चित करें कि आप बुला रहे हैं बनाने के लिए

webBrowser1.DrawToBitmap(); // but its unsupported and doesnt work 
  1. 3rd party api - not wasting my time
  2. .DrawToBitmap and nonanswer-links
  3. 100 wrong answers
  4. just takes a screenshot
+3

यदि आपका मतलब है कि थ्रेड, उन्हें जोड़ने के बारे में और यह निर्दिष्ट करना कि उनमें से प्रत्येक –

+0

क्यों काम नहीं कर रहा है, तो आप मैट हैं। क्या आप जवाब जानते हैं? – user1873073

+0

@ user1873073 कृपया अपने कोड का हिस्सा पोस्ट करें। खासकर जहां आप दस्तावेज़ लोड कर रहे हैं और आपका दस्तावेज़ पूरा हो गया है। – scartag

उत्तर

3

मैं पिछले सप्ताह अपनी परियोजना में एक समान कार्य पर काम कर रहा था, इस विषय पर आपके लिंक सहित कुछ पोस्ट पढ़ें। मैं अपना अनुभव साझा करना चाहता हूं:

इस फ़ंक्शन का मुख्य भाग System.Windows.Forms.WebBrowser.DrawToBitmap विधि है।

लेकिन इसकी असमर्थित और does not काम

यह समर्थित है और काम करता है, लेकिन हमेशा नहीं ठीक काम करता है। कुछ परिस्थितियों में आपको एक खाली छवि स्क्रीनशॉट मिलेगा (मेरे अनुभव में, जितना अधिक जटिल एचटीएमएल लोड होता है, उतना ही अधिक संभव हो जाता है। मेरे प्रोजेक्ट में केवल बहुत ही सरल और अच्छी तरह से स्वरूपित एचटीएमएल वेबब्रोसर नियंत्रण में लोड किए जाएंगे, इसलिए मुझे कभी नहीं मिलता खाली छवियां)।

वैसे भी मेरे पास कोई 100% सही समाधान नहीं है। यहां मेरे कोर कोड का हिस्सा है और उम्मीद है कि यह मदद करता है (यह एएसपी.नेट एमवीसी 3 पर काम करता है)।

using (var browser = new System.Windows.Forms.WebBrowser()) 
{ 
    browser.DocumentCompleted += delegate 
    { 
     using (var pic = new Bitmap(browser.Width, browser.Height)) 
     { 
      browser.DrawToBitmap(pic, new Rectangle(0, 0, pic.Width, pic.Height)); 
      pic.Save(imagePath); 
     } 
    }; 

    browser.Navigate(Server.MapPath("~") + htmlPath); //a file or a url 
    browser.ScrollBarsEnabled = false; 

    while (browser.ReadyState != System.Windows.Forms.WebBrowserReadyState.Complete) 
    { 
     System.Windows.Forms.Application.DoEvents(); 
    } 
} 
+2

क्या आपके पास इस मुद्दे के लिए कोई काम है जिसे आपने "खाली छवि समस्या" का सामना किया है। क्योंकि मैंने अभी इसका सामना किया है। धन्यवाद – Vivekh

+0

मेरे पास पृष्ठभूमि और एचटीएमएल के रूप में एसवीजी छवि है और जेसन से डेटा वेबब्रोसर नियंत्रण के अंदर डोम पर मैप किया गया है।मुझे रिक्त छवि भी मिल रही है – Sandeep

+0

@ संदीप जैसा कि मैंने उत्तर में कहा था, मुझे नहीं पता कि आपका HTML पृष्ठ काफी जटिल है, तो मुझे खाली पृष्ठ समस्या को हल करने का तरीका नहीं है। –

6

कोशिश DocumentCompleted घटना में विधि।

webBrowser1.Width = wb.Document.Body.ScrollRectangle.Width; 
webBrowser1.Height = wb.Document.Body.ScrollRectangle.Height; 

Bitmap bitmap = new Bitmap(webBrowser1.Width, webBrowser1.Height); 
webBrowser1.DrawToBitmap(bitmap, new Rectangle(0, 0, webBrowser1.Width, webBrowser1.Height)); 
+0

यह हो सकता है लेकिन मेरा लक्ष्य एक Google छवि खोज करने में सक्षम होना है और नीचे तक पहुंचने तक और अधिक दिखाएं क्लिक करें और उसके बाद एक बटन क्लिक करें ताकि दस्तावेज़ पूर्ण नहीं होगा। – user1873073

+0

@ user1873073 यह सुनिश्चित नहीं है कि आपको क्यों लगता है कि यह काम नहीं करेगा। पूरा दस्तावेज कई बार बुलाया जाएगा (प्रत्येक नए अनुरोध के लिए एक) आखिरी कॉल में क्या मायने रखता है। – scartag

+0

हां पता है, मैंने मूल रूप से इस विशाल कार्यान्वयन को लिखा था जिसने खुले नियंत्रण की खिड़कियों से सीधे एक तस्वीर ली, फिर नियंत्रण को स्क्रॉल किया, और छवियों को एक साथ सिलाई। फिर मैंने जितना संभव हो उतना स्क्रॉल संबंधित मुद्दों को ठीक किया ... लेकिन अभी मैं यादृच्छिक रूप से आपकी पोस्ट पाई, और चौड़ी आंखें चला गया: आप बस चौड़ाई को स्क्रीन पर प्रदर्शित करने से कहीं अधिक बड़े सेट कर सकते हैं, और वहां है कोई समस्या नहीं?! आपके दो छोटे लाइनों ने मेरे कार्यक्रम में कुछ 200-300 प्रतिस्थापित किए। केवल अंतर यह है कि अब मैं एक ActiveX कैप्चरर का उपयोग कर रहा हूं, क्योंकि DrawToBitmap अविश्वसनीय है। वैसे भी, मेरे कोड को सरल बनाने के लिए धन्यवाद। –

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