11-10-16, 01:15 AM
المكتبة مطورة بلغتي ++C/C وهي مكتبة مفتوحة المصدر و فيها امكانيات كبيرة جداً و تحتاج الى حرفية للتعامل معها
و تعطي المطور قدر عالية على التعامل مع صفحات Html و غيرها الكثير (تحتاج الى من يسبر اغوارها)
و لكي لا اطيل عليكم الكلام نبدأ بطريقة تنصيب المكتبة
الرابط التالي يحتوي الشرح
How to use CefSharp
و معلومات اوفر عنها و عن طريقة استخدامها CefSharp و هنا ايضاً Chromium Embedded Framework Forum
و مع البحث و التحري ستجد الكثير عنها
وعن تجربتي البسيطة معها (مع المتصفح اقصد) فهو تماماً كما متصفح Chrome الخاص بقوقل و هناك الكثير من المزايا يمكنك انجازها
و اهم شي عجبني للوهلة الاولى هو جودة الاحتواء للصفحات و التوافق الكامل مع الاستايلات بعكس المتصفح الفقير الخاص باطار العمل
بعد تنصيب المكتبة قمت بعمل مستعرض بسيط , النسخة التي نزلت عندي تتوافق مع الاطار 4.5.2
المهم اذا كنت مهتم بالتطبيق تابع معي هذا البرنامج البسيط
في البداية أنشأ مشروعك من اي نوع تحب #C او Vb او Wpf
انا جربت بالبداية على #C و من بعدها جربت على Vb النتائج جيدة لكن و للصراحة الامور تبدو اكثر انفتاحاً مع استخدام #C
على اي حال التجربة ستكون على Vb
بعد انشاء المشروع قم باستيراد المراجع التالية الى قائمة المراجع
CefSharp.dll
CefSharp.core.dll
CefSharp.WinForms.dll
تصميم النموذج كما التالي
اسم النموذج ChromeBrows
بعد ذلك و في النموذج الخاص بك قم باستيراد
تعريف المستعرض
اضافة المستعرض الى الحاوية و اضافة بعض الاحداث للمستعرض
الاحداث مع اكواد الازرار التي في الصورة
يفضل معالجة الاحداث دائماً في Thread منفصلة لكي لا يجمد لديك المتصفح
يتم نسخ نص Html الى الحافظة و يمكنك ايضا عرض نص HTML مباشرة في برنامج المفكرة عبر استدعاء الحدث
سيقوم تلقائيا بفتح المفكرة و وضع نص Html فيها
الى هنا اترك الميكرفون للمهتمين بهذه المكتبة
و تعطي المطور قدر عالية على التعامل مع صفحات Html و غيرها الكثير (تحتاج الى من يسبر اغوارها)
و لكي لا اطيل عليكم الكلام نبدأ بطريقة تنصيب المكتبة
الرابط التالي يحتوي الشرح
How to use CefSharp
و معلومات اوفر عنها و عن طريقة استخدامها CefSharp و هنا ايضاً Chromium Embedded Framework Forum
و مع البحث و التحري ستجد الكثير عنها
وعن تجربتي البسيطة معها (مع المتصفح اقصد) فهو تماماً كما متصفح Chrome الخاص بقوقل و هناك الكثير من المزايا يمكنك انجازها
و اهم شي عجبني للوهلة الاولى هو جودة الاحتواء للصفحات و التوافق الكامل مع الاستايلات بعكس المتصفح الفقير الخاص باطار العمل
بعد تنصيب المكتبة قمت بعمل مستعرض بسيط , النسخة التي نزلت عندي تتوافق مع الاطار 4.5.2
المهم اذا كنت مهتم بالتطبيق تابع معي هذا البرنامج البسيط
في البداية أنشأ مشروعك من اي نوع تحب #C او Vb او Wpf
انا جربت بالبداية على #C و من بعدها جربت على Vb النتائج جيدة لكن و للصراحة الامور تبدو اكثر انفتاحاً مع استخدام #C
على اي حال التجربة ستكون على Vb
بعد انشاء المشروع قم باستيراد المراجع التالية الى قائمة المراجع
CefSharp.dll
CefSharp.core.dll
CefSharp.WinForms.dll
تصميم النموذج كما التالي
اسم النموذج ChromeBrows
بعد ذلك و في النموذج الخاص بك قم باستيراد
PHP كود :
Imports CefSharp.WinForms.ChromiumWebBrowser
Imports CefSharp.WinForms
Imports CefSharp.WinForms.Internals
Imports CefSharp
تعريف المستعرض
كود :
Dim browser As ChromiumWebBrowser
اضافة المستعرض الى الحاوية و اضافة بعض الاحداث للمستعرض
PHP كود :
Private Sub ChromeBrows_Load(sender As Object, e As EventArgs) Handles MyBase.Load
browser = New ChromiumWebBrowser("http://vb4arb.com/vb/index.php")
ToolStripContainer1.ContentPanel.Controls.Add(browser)
AddHandler browser.LoadingStateChanged, AddressOf OnLoadingStateChanged
AddHandler browser.StatusMessage, AddressOf OnBrowserStatusMessage
AddHandler browser.TitleChanged, AddressOf OnBrowserTitleChanged
AddHandler browser.AddressChanged, AddressOf OnBrowserAddressChanged
End Sub
الاحداث مع اكواد الازرار التي في الصورة
PHP كود :
Private Sub OnBrowserStatusMessage(sender As Object, args As StatusMessageEventArgs)
Me.InvokeOnUiThreadIfRequired(Function() InlineAssignHelper(Stlb1.Text, args.Value))
End Sub
Function InlineAssignHelper(ByRef target As String, ByVal value As String) As [String]
target = value
Return value
End Function
Private Sub OnBrowserTitleChanged(sender As Object, args As TitleChangedEventArgs)
Me.InvokeOnUiThreadIfRequired(Function() InlineAssignHelper(Text, args.Title))
End Sub
Private Sub OnBrowserAddressChanged(sender As Object, args As AddressChangedEventArgs)
Me.InvokeOnUiThreadIfRequired(Function() InlineAssignHelper(urlTextBox.Text, args.Address))
End Sub
Private Sub SetCanGoForward(canGoForward As Boolean)
Me.InvokeOnUiThreadIfRequired(Function() InlineAssignHelper(forwardButton.Enabled, canGoForward))
End Sub
Private Sub SetCanGoBack(canGoBack As Boolean)
Me.InvokeOnUiThreadIfRequired(Function() InlineAssignHelper(backButton.Enabled, canGoBack))
End Sub
Private Sub OnLoadingStateChanged(sender As Object, args As LoadingStateChangedEventArgs)
SetCanGoBack(args.CanGoBack)
SetCanGoForward(args.CanGoForward)
End Sub
Private Sub SetIsLoading(isLoading As Boolean)
goButton.Text = If(isLoading, "Stop", "Go")
End Sub
Private Sub LoadUrl(url As String)
If Uri.IsWellFormedUriString(url, UriKind.RelativeOrAbsolute) Then
browser.Load(url)
End If
End Sub
Private Sub urlTextBox_KeyUp(sender As Object, e As KeyEventArgs)
If e.KeyCode <> Keys.Enter Then
Return
End If
LoadUrl(urlTextBox.Text)
End Sub
Private Sub backButton_Click_1(sender As Object, e As EventArgs) Handles backButton.Click
browser.Back()
End Sub
Private Sub forwardButton_Click_1(sender As Object, e As EventArgs) Handles forwardButton.Click
browser.Forward()
End Sub
Private Sub goButton_Click(sender As Object, e As EventArgs) Handles goButton.Click
LoadUrl(urlTextBox.Text)
End Sub
Public Shared Function GetTextAsync(browser As IWebBrowser) As Task(Of String)
Using frame = browser.GetMainFrame()
Return frame.GetSourceAsync
End Using
End Function
Private Sub BtnGetHtml_Click(sender As Object, e As EventArgs) Handles BtnGetHtml.Click
Dim s As String = GetTextAsync(browser).Result()
My.Computer.Clipboard.SetText(s)
End Sub
يفضل معالجة الاحداث دائماً في Thread منفصلة لكي لا يجمد لديك المتصفح
يتم نسخ نص Html الى الحافظة و يمكنك ايضا عرض نص HTML مباشرة في برنامج المفكرة عبر استدعاء الحدث
PHP كود :
browser.ViewSource()
الى هنا اترك الميكرفون للمهتمين بهذه المكتبة
اللهم لك الحمد كما ينبغي لجلال وجهك و عظيم سلطانك
في حل و ترحال