PDA

View Full Version : سوال: بدست آوردن سورس html و متن انتخاب شده در webBrowser



FirstLine
یک شنبه 07 خرداد 1391, 15:08 عصر
با سلام
در یک پروژه و نرم افزار C# در فرم برنامه یک webBrowser ، دو تکست باکس و یک دکمه دارم که یک سری صفحات وب و html در آن لوود میشه.
چجوری میشه پس از انتخاب یک قسمت از متن صفحه وب ، با زدن دکمه ، متن انتخاب شده در تکست باکس اول و سورس و html قسمت انتخاب شده در تکست باکس دوم نمایش داده شود؟
با تشکر

Saeed_m_Farid
دوشنبه 08 خرداد 1391, 10:26 صبح
سلام

من همچین چیزی لازمم شد ولی هیچ کلاس یا اینترفیس mannaged براش تو #C پیدا نکردم؛ مجبور شدم برای این کار از DomDocument که یه اینترفیس unmanaged در System.Windows.Forms.HtmlDocument هست استفاده کنم :ناراحت: که اونم به IHTMLDocument2 (http://msdn.microsoft.com/en-us/library/aa752574%28VS.85%29.aspx) تبدیل (cast) کردم از Microsoft.mshtml؛ این کلاس تو Microsoft.mshtml.dll هست که باید به Reference پروژه تون اضافه اش کنید، همه اینا باعث میشه کد 100% قابل اطمینان نباشه و کنترلش دست خودتون نباشه! ولی کار آدم راه میافته و برای من که قرار نبود Firebug واسه پروژه ام راه بندازم؛ یه نمونه کد میذارم برای اینکار :


private void btnGetDomElementClick(object sender, EventArgs e)
{
IHTMLDocument2 htmlDocument = webBrowser.Document.DomDocument as IHTMLDocument2;
IHTMLSelectionObject selection = htmlDocument.selection;
if (selection != null)
{
IHTMLTxtRange range = selection.createRange() as IHTMLTxtRange;

if (range != null)
{
textBox1.Text = range.text;
textBox2.Text = range.htmlText;
}
}
}


توجه: همونطور که گفتم برای IHTMLDocument2 باید Microsoft.mshtml رو به Reference های پروژه اضافه کنید، ولی ممکنه (مثل من) چند نسخه از اون رو سیستم شما باشه، از اونی که در مسیر :
%ProgramFiles%\Microsoft.NET\Primary Interop Assemblies\Microsoft.mshtml.dll هست استفاده کنید، کد Unmanaged این چیزا رو هم داره دیگه ...
مثال msdn برای مطالعه بیشتر : #Walkthrough: Accessing the DHTML DOM from C
(http://msdn.microsoft.com/en-us/library/aa290341%28VS.71%29.aspx)
* اگه ابعاد پروژه تون بزرگتر از این حرف هاست، من تو جستجوهام به این دو تا کنترل بزرگ رسیدم که خیلی حوصله میخواست و resource زیادی از سیستم می گیرن و دیگه اونقدرش رو در اختیار نداشتم :



The most complete C#‎‎‎ Webbrowser wrapper control (http://www.codeproject.com/Articles/18935/The-most-complete-C-Webbrowser-wrapper-control)
Snoop (اa WPF utility) (http://www.blois.us/Snoop/)
اینم یه کارایی کرده :لبخند: : FireBug Style Inspect HTML Element (http://stackoverflow.com/questions/9502968/net-webbrowser-firebug-style-inspect-html-element)