X
تبلیغات
رایتل

وبلاگ طراحی و برنامه نویسی

آموزش سی شازپ

کنترل Web Browser در سی شارپ – ساخت مرورگر صفحات وب :


برنامه Internet Explorer یا iexplore.exe در واقع برنامه کوچکی است که وظیفه اصلی آن ایجاد چارچوبی برای بهم پیوستن عناصر مختلف است و این عناصر هستند که وظایف اصلی مثل load کردن صفحات وب ، اجرای کدهای Html و غیره را انجام می دهند . اصلی ترین عنصری که مستقیماً توسط iexplore.exe استفاده می شود کنترل Webbrowser ( موجود در فایل shdocrw.dll ) می باشد . وظیفه این فایل dll ، عبارت است از حرکت بین صفحات وب ، مدیریت تاریخچه صفحات دیده شده و غیره . این فایل خود از فایل دیگری بنام Mshtml.dll استفاده می کند که وظیفه آن بررسی و اجرای فایلهای html است . مایکروسافت به برنامه نویسان این امکان را داده که بتوانند در برنامه هایشان از کنترل webbrowser استفاده کنند . با استفاده از این کنترل می توان به سادگی یک مرورگر وب تقریباً کامل ساخت .


خصوصیات کنترل Webbrowser :
Webbrowser علاوه بر خواص استانداردی مثل width ، height و … خواص زیر را دارد :
1 – Busy : اگر در حال load کردن یک صفحه یا در حال جستجو در وب باشد این خاصیت True است . توسط متد Stop می توان عملیات جاری را متوقف کرد .
2 – Container : ارجاع به شی نگهدارنده کنترل webbrowser
3 – Document : ارجاع به صفحه html فعلی . برای کار با این صفحه html می توان از خواص و متدهابی شی Document استفاده کرد . 
4 – LocationName : حاوی آدرس محلی است که اکنون در کنترل webbrowser ، load شده است . اگر این محل یک صفحه html باشد عنوان آن صفحه خواهد بود و اگر این محل یک فایل در شبکه باشد مسیر کامل آن فایل خواهد بود . 
5 – LocationURL : حاوی url محلی است که فعلاً در کنترل webbrowser ، load شده است . 
6 – Offline : اگر کنترل webbrowser در حالت عدم اتصال باشد مقدار آن True و در غیراینصورت False است . 
7 – Parent : فرمی را نشان می دهد که کنترل webbrowser در آن قرار دارد . 
8 – ReadyState : وضعیت کنترل webbrowser را برمی گرداند .

متدهای کنترل webbrowser : این متدها مربوط به مرور در صفحات وب هستند :
1- GoBack : در لیست تاریخچه url ها ، یکی به عقب برمی گردد . 
2 – GoForward : در لیست تاریخچه url ها ، یکی به جلو می رود . 
3 – GoHome : به homepage مرورگر می رود . 
4 – Navigate : به یک url یا فایل می رود . ساختار این متد بصورت زیر است :
Navigate URL [Flags,][TargetFrameName,][PostData,][Headers]x
URL آدرس مقصد می باشد . Flags نحوه باز شدن آدرس مقصد را تعیین می کند . اگر این پارامتر ذکر نشود آدرس جدید در پنجره فعلی باز خواهد شد و به لیست تاریخچه اضافه شده و اگر کپی آن در temperory cache موجود باشد از آنجا خوانده می شود . مقادیر پارامتر Flags عبارتند از :
- NavOpenInNewWindow : آدرس جدید را در پنجره جدیدی باز می کند . 
- NavNoHistory : به لیست تاریخچه اضافه نمی شود بلکه جایگزین صفحه فعلی می شود . 
- NavNoReadFromCache : صفحه جدید از cache خوانده نمی شود .
- NavNoWriteToCache : صفحه جدید روی cache نوشته نمی شود

Event های کنترل webbrowser : این event ها مربوط به مرور در وب و تغییر حالت آن هستند :
1 – CommandStateChange : برای فعال یا غیرفعال کردن دکمه های Forward و Back در مرورگر استفاده می شود . شکل کلی فراخوانی این event بصورت زیر است :
Private Sub WebBrowser1_CommandStateChange(ByVal Command As Long, ByVal Enable As Boolean)

که command فرمانی است که حالت فعال آن تغییر کرده است و دو مقدار می گیرد : 1 و 3 که بترتیب معادل فرمانهای GoForward و GoBack هستند . 
Enable فعال یا غیرفعال بودن فرمان را تعیین می کند . 
2 – DocumentComplete : این event زمانی فعال می شود که صفحه در حال load شدن به حالت ReadyState_Complete برود . شکل کلی فراخوانی این event بصورت زیر است :
Private Sub WebBrowser1_DocumentComplete(ByVal pDisp As Object, URL As Variant)
که pDisp ارجاعی به کنترل webbrowser است که event در آن رخ داده است و URL آدرس صفحه در حال load شدن است . 
3 – DownloadBegin : این event در آغاز حرکت به صفحه جدید روی می دهد و هیچ پارامتری نمی گیرد . مرورگر می تواند در این event پیغامی برای شروع عملیات جدید نشان می دهد .
4 – DownloadComplete : این event در پایان عملیات یا در صورت انصراف کاربر یا بروز خطا روی می دهد . 
5 – ProgressChange : با بروز هر تغییری در وضعیت load ، این event روی می دهد . شکل کلی فراخوانی آن بصورت زیر است :
Private Sub WebBrowser1_ProgressChange(ByVal Progress As Long, ByVal ProgressMax As Long)

که Progress نشان دهنده پیشرفت عملیات ( بایتهای load شده ) است . پارامتر ProgressMax تعداد کل بایتهایی که باید load شوند را نشان می دهد بنابر این :
(Progress/ProgressMax)*100=درصد پیشرفت عملیات load

یک مثال ساده :

از منوی project مورد components را انتخاب کنید و از لیست کنترلها ، Microsoft Internet Controls را به toolbar خود اضافه کنید . یک کنترل WebBrowser روی فرم قرار دهید و سایز آنرا به اندازه ابعاد فرم خود قرار دهید . یک textbox و یک دکمه روی فرم قرار دهید . کد زیر را برای event مربوط به کلیک دکمه بنویسید :

webBrowser1.Navigate(textBox1.Text);