التنبيهات التالية ظهرت :
Warning [2] count(): Parameter must be an array or an object that implements Countable - Line: 864 - File: showthread.php PHP 7.4.33 (Linux)
File Line Function
/showthread.php 864 errorHandler->error



تقييم الموضوع :
  • 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 فيها
الى هنا اترك الميكرفون للمهتمين بهذه المكتبة
اللهم لك الحمد كما ينبغي لجلال وجهك و عظيم سلطانك
في حل و ترحال
الرد }}}


الردود في هذا الموضوع
امتلك متصفح كروم داخل برنامجك مع مكتبة CefSharp - بواسطة ابو ليلى - 11-10-16, 01:15 AM

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


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