2008-10-20 9 views
16

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

मैं इसके बारे में किसी भी मदद या संसाधन की सराहना करता हूं।

धन्यवाद

उत्तर

43

आपको WebBrowser नियंत्रण की Document.DomDocument प्रॉपर्टी का उपयोग करने और Microsoft.mshtml इंटरऑप असेंबली में प्रदान किए गए IHtmlDocument2 इंटरफ़ेस में डालने की आवश्यकता है। यह आपको पूर्ण डोम तक पहुंच प्रदान करता है जैसा कि वास्तव में IE में चल रहे जावास्क्रिप्ट के लिए उपलब्ध है।

ऐसा करने के लिए आपको सबसे पहले "सी: \ प्रोग्राम फ़ाइलें \ Microsoft.NET \ प्राथमिक इंटरऑप असेंबली \ Microsoft.mshtml.dll" पर Microsoft.mshtml असेंबली में अपनी प्रोजेक्ट का संदर्भ जोड़ने की आवश्यकता है। एक से अधिक हो सकते हैं, सुनिश्चित करें कि आप इस पथ के साथ संदर्भ चुनते हैं।

फिर, वर्तमान पाठ चयन पाने के लिए उदाहरण के लिए: एक .NET अनुप्रयोग से पूर्ण डोम तक पहुँचने के बारे में अधिक जानकारी के लिए

using mshtml; 

... 

    IHTMLDocument2 htmlDocument = webBrowser1.Document.DomDocument as IHTMLDocument2; 

    IHTMLSelectionObject currentSelection= htmlDocument.selection; 

    if (currentSelection!=null) 
    { 
     IHTMLTxtRange range= currentSelection.createRange() as IHTMLTxtRange; 

     if (range != null) 
     { 
      MessageBox.Show(range.text); 
     } 
    } 

, देखें:

+0

वाह देखें, नियंत्रण अधिक शक्तिशाली है जिसे मैंने सोचा ! –

+0

यदि आपको आईई/एमएसटीएमएल पर निर्भरता पर कोई फर्क नहीं पड़ता है तो यह आपके डेस्कटॉप अनुप्रयोगों में वेब स्टाइल यूआई जोड़ने का एक बहुत ही शक्तिशाली और अपेक्षाकृत आसान तरीका है। 2 तरीके संचार और घटनाएं भी बहुत सरल हैं, अगर कोई दिलचस्पी लेता है तो मुझे बताएं। – Ash

+0

बहुत बहुत धन्यवाद। यही वह है जिसकी तलाश में मैं हूं। जिस परियोजना पर मैं काम कर रहा हूं वह HTML का उपयोग कर रहा है, यही कारण है कि मैंने वेब ब्राउज़र नियंत्रण का चयन किया। मैं सिर्फ चयनित पाठ प्राप्त करने का कोई तरीका नहीं समझ सका। स्रोतों के लिए भी धन्यवाद, उन्होंने सार्थक जानकारी प्रदान की है जो मैं अभी गायब था। – Cliff

-1

मैं तुम्हें एक WinForms आवेदन जो एक नियंत्रण एक वेबसाइट खुलती शामिल है संभालने हूँ।

यह देखने के लिए जांचें कि क्या आप अपने वेबब्रोसर नियंत्रण में जावास्क्रिप्ट इंजेक्ट/चला सकते हैं या नहीं। जावास्क्रिप्ट का उपयोग करके, आप यह पता लगाने में सक्षम होंगे कि क्या चुना गया था और इसे वापस कर दिया गया था। अन्यथा, मुझे संदेह है कि वेब ब्राउज़र नियंत्रण में इसके बारे में कोई जानकारी है कि इसमें क्या चुना गया है।

+0

आप वेब ब्राउज़र के अंदर जावास्क्रिप्ट चला सकते हैं और सी # पर बात कर सकते हैं। उदाहरण के लिए यह http://stackoverflow.com/questions/305915/winforms-how-do-i-execute-c-plplication-code-from-inside-webbrowser-control – MarkJ

0

और यदि आप बस तकनीक का उपयोग करते हैं?

// कॉपी चयनित पाठ क्लिपबोर्ड में

 Clipboard.Clear(); 
     SendKeys.SendWait("^(c)"); 

// क्लिपबोर्ड

 string strClip = Clipboard.GetText().Trim(); 
     Clipboard.Clear(); 
1

से चयनित पाठ शायद ज़रुरत किसी में MSHTML के लिए एक संदर्भ जोड़ना आवश्यक नहीं है कि समाधान में रुचि रखता है .dll:

private string GetSelectedText() 
{ 
    dynamic document = webBrowser.Document.DomDocument; 
    dynamic selection = document.selection; 
    dynamic text = selection.createRange().text; 
    return (string)text; 
}