تقييم الموضوع :
  • 0 أصوات - بمعدل 0
  • 1
  • 2
  • 3
  • 4
  • 5
امتلك متصفح كروم داخل برنامجك مع مكتبة CefSharp
#1
المكتبة مطورة بلغتي ++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




بعد ذلك و في النموذج الخاص بك قم باستيراد
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 ObjectAs EventArgsHandles MyBase.Load
        browser 
= New ChromiumWebBrowser("http://vb4arb.com/vb/index.php")

 
       ToolStripContainer1.ContentPanel.Controls.Add(browser)


 
       AddHandler browser.LoadingStateChangedAddressOf OnLoadingStateChanged
        AddHandler browser
.StatusMessageAddressOf OnBrowserStatusMessage
        AddHandler browser
.TitleChangedAddressOf OnBrowserTitleChanged
        AddHandler browser
.AddressChangedAddressOf OnBrowserAddressChanged

    End Sub 

الاحداث مع اكواد الازرار التي في الصورة
PHP كود :
   Private Sub OnBrowserStatusMessage(sender As Objectargs As StatusMessageEventArgs)
 
       Me.InvokeOnUiThreadIfRequired(Function() InlineAssignHelper(Stlb1.Textargs.Value))
 
   End Sub


    Function InlineAssignHelper
(ByRef target As StringByVal value As String) As [String]
 
       target value
        Return value
    End 
Function


 
   Private Sub OnBrowserTitleChanged(sender As Objectargs As TitleChangedEventArgs)

 
       Me.InvokeOnUiThreadIfRequired(Function() InlineAssignHelper(Textargs.Title))

 
   End Sub

    Private Sub OnBrowserAddressChanged
(sender As Objectargs As AddressChangedEventArgs)
 
       Me.InvokeOnUiThreadIfRequired(Function() InlineAssignHelper(urlTextBox.Textargs.Address))
 
   End Sub

    Private Sub SetCanGoForward
(canGoForward As Boolean)
 
       Me.InvokeOnUiThreadIfRequired(Function() InlineAssignHelper(forwardButton.EnabledcanGoForward))
 
   End Sub
    Private Sub SetCanGoBack
(canGoBack As Boolean)
 
       Me.InvokeOnUiThreadIfRequired(Function() InlineAssignHelper(backButton.EnabledcanGoBack))
 
   End Sub

    Private Sub OnLoadingStateChanged
(sender As Objectargs 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(urlUriKind.RelativeOrAbsoluteThen
            browser
.Load(url)
 
       End If
 
   End Sub


    Private Sub urlTextBox_KeyUp
(sender As ObjectAs KeyEventArgs)
 
       If e.KeyCode <> Keys.Enter Then
            Return
        End 
If

 
       LoadUrl(urlTextBox.Text)

 
   End Sub


    Private Sub backButton_Click_1
(sender As ObjectAs EventArgsHandles backButton.Click
        browser
.Back()

 
   End Sub

    Private Sub forwardButton_Click_1
(sender As ObjectAs EventArgsHandles forwardButton.Click
        browser
.Forward()

 
   End Sub

    Private Sub goButton_Click
(sender As ObjectAs EventArgsHandles 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 ObjectAs EventArgsHandles BtnGetHtml.Click
        Dim s 
As String GetTextAsync(browser).Result()
 
       My.Computer.Clipboard.SetText(s)

 
   End Sub 


يفضل معالجة الاحداث دائماً في Thread منفصلة لكي لا يجمد لديك المتصفح
يتم نسخ نص Html الى الحافظة و يمكنك ايضا عرض نص HTML مباشرة في برنامج المفكرة عبر استدعاء الحدث

PHP كود :
       browser.ViewSource() 
سيقوم تلقائيا بفتح المفكرة و وضع نص Html فيها
الى هنا اترك الميكرفون للمهتمين بهذه المكتبة
اللهم لك الحمد كما ينبغي لجلال وجهك و عظيم سلطانك
في حل و ترحال
الرد }}}}
تم الشكر بواسطة: أبو عمر , أبو عمر , ممدوح , LoveVb , myalsailamy , Amir_alzubidy
#2
موضوع جميل ، سلمت اناملك و بديل للأداة العجوز MS WebBrowser التقليديه التي لا تدعم المواقع العصريه و الجديده و تسبب سوء في عرضها .

ان شاء الله سيكون لي تجربه معها بفضلك و سأعود للموضوع لاني ابحث عن نقطه تهمني كثيرا وهي التحكم بمحتوى الصفحه التي يعرضها المتصفح برمجياً ، بمعنى ادخال نص و الضغط على زر بالصفحه ، تنفيذ أكواد جافا سكربت ...الخ .
اسم معرفي : محمد يحيى
الرد }}}}
تم الشكر بواسطة: ابو ليلى
#3
موضوع رائع

هل فعلا يعمل بهذه المكتبات الثلاث فقط
CefSharp.dll
CefSharp.core.dll
CefSharp.WinForms.dll

لم أستطع أن أجد رابط تحميل المكتبات لتجربتها.
الرد }}}}
تم الشكر بواسطة: ابو ليلى
#4
(11-10-16, 11:03 AM)myalsailamy كتب : موضوع  جميل ، سلمت اناملك  و بديل للأداة العجوز  MS WebBrowser  التقليديه التي لا تدعم  المواقع العصريه و الجديده  و تسبب سوء في عرضها  .

ان شاء الله سيكون لي تجربه معها بفضلك و سأعود للموضوع  لاني ابحث عن نقطه تهمني كثيرا وهي التحكم بمحتوى الصفحه التي يعرضها المتصفح برمجياً  ، بمعنى  ادخال نص و الضغط على زر بالصفحه ، تنفيذ أكواد جافا سكربت   ...الخ .
المكتبة فيها من الخدمات الكثير و اذا كنت تبحث عن التحكم بمحتوى الصفحة برمجيا فلديك البديل الجديد في اطار العمل 4.5 

المكتبة HttpClient النسخة المطورة من Http Request + Web Client  تستطيع انجاز الكثير من الاشياء بمحتوى الصفحة , تستحق التجربة ؟
و لكنها متوفرة فقط بدءً من الاصدار 4.5  مقارنة بسيطة



(12-10-16, 02:47 AM)ممدوح كتب : موضوع رائع

هل فعلا يعمل بهذه المكتبات الثلاث فقط
CefSharp.dll
CefSharp.core.dll
CefSharp.WinForms.dll

لم أستطع أن أجد رابط تحميل المكتبات لتجربتها.

اخي ممدوح استخدم Mange Nu Packages داخل  واجهة البرنامج و اتبع الشرح في الرابط
شرح طريقة التنزيل
اللهم لك الحمد كما ينبغي لجلال وجهك و عظيم سلطانك
في حل و ترحال
الرد }}}}
تم الشكر بواسطة: ممدوح , Amir_alzubidy
#5
بارك الله فيكم وجزاكم الله عنا خير الجزاء
سأعود قريباً ان شاء الله

الرد }}}}
تم الشكر بواسطة: ابو ليلى , عبد العزيز البسكري


التنقل السريع :


يقوم بقرائة الموضوع: بالاضافة الى ( 1 ) ضيف كريم