🙂 İNSANLARIN EN HAYIRLISI INSANLARA FAYDALI OLANDIR 🙂

Ramazan HABER / C# / CefSharp chrome gibidir embedded winform webbrowser

1-) C# - CefSharp chrome gibidir embedded winform webbrowser

 

nugetten indir : CefSharp.WinForms

 

using CefSharp;

using CefSharp.WinForms;

using System;

using System.Windows.Forms;

 

namespace ProtobufWeb

{

    public partial class Form1 : Form

    {

        public Form1()

        {

            InitializeComponent();

        }

 

        ChromiumWebBrowser browser;

        private void Form1_Load(object sender, EventArgs e)

        {

            Cef.Initialize(new CefSettings());

            browser = new ChromiumWebBrowser("https://protobuf-decoder.netlify.app/");

            panel1.Controls.Add(browser);

            browser.Dock = DockStyle.Fill;

 

          browser.LoadingStateChanged += OnLoadingStateChanged;

        }

 

  private void OnLoadingStateChanged(object sender, LoadingStateChangedEventArgs args)

             {

                   if (!args.IsLoading && basladim == false){

 

                      }

 

             }

 

        private void button1_Click(object sender, EventArgs e)

        {

          // usernama e değer yazmak için kullan

    // browser.ExecuteScriptAsync("document.getElementById('userName').value= 'admin'");

 

 // id ile click olayı

            //string script = string.Format("document.getElementById('loginBtn').click();");

            //browser.EvaluateScriptAsync(script).ContinueWith(x =>

            //{

            //    var response = x.Result;

 

            //    if (response.Success && response.Result != null)

            //    {

            //        var startDate = response.Result;

            //        //startDate is the value of a HTML element.

            //    }

            //});

 

 

            // AŞAĞIDAKİ KOD BUTTONA CLİCK OLAYI YAPAR

            string script = string.Format("document.getElementsByClassName('ui fluid primary button')[0].click();");

            browser.EvaluateScriptAsync(script).ContinueWith(x =>

            {

                var response = x.Result;

 

                if (response.Success && response.Result != null)

                {

                    var startDate = response.Result;

                    //startDate is the value of a HTML element.

                }

            });

 

            // AŞAĞIDAKİ KOD HTML TEXTİNİ ALMAK İÇİN KULLANILIR

            string script2 = string.Format(@"document.getElementsByTagName ('html')[0].innerHTML");

            browser.EvaluateScriptAsync(script2).ContinueWith(x =>

            {

                var response = x.Result;

                if (response.Success && response.Result != null)

                {

                    this.Invoke(new MethodInvoker(() =>

                    {

                        textBox2.Text = response.Result.ToString();

                    }));

                }

            });

        }

    }

}

 

 

 

kaynak : https://docs.telerik.com/devtools/winforms/knowledge-base/how-to-embed-chrome-browser-in-a-winforms-application

 

 

2- JAVASCRİPT MESAJLARINI KAPATMAK İÇİN

 

private void Form1_Load(object sender, EventArgs e)

        {

            var cefSettings = new CefSettings();

            cefSettings.CefCommandLineArgs.Add("disable-javascript-harmony-shipping", "1");

 

            Cef.Initialize(cefSettings);

            browser = new ChromiumWebBrowser("https://kbscalisan.egm.gov.tr/Proje/homepage.aspx");

            

            var browserSettings = new BrowserSettings

            {

                Javascript = CefState.Enabled,

                JavascriptCloseWindows = CefState.Disabled,

                JavascriptAccessClipboard = CefState.Disabled,

                LocalStorage = CefState.Enabled,

                Databases = CefState.Enabled,

            };

 

            browser.BrowserSettings = browserSettings;

 

            panel1.Controls.Add(browser);

            browser.Dock = DockStyle.Fill;

            

            browser.LoadingStateChanged += OnLoadingStateChanged;

 

        }

 

3- TÜM COOKİLERİ ALMAK İÇİN DİĞER

 

1- CookieVisitor.cs

 

using CefSharp;

using System;

using System.Collections.Generic;

using System.Linq;

 

namespace Deneme3

{

    public class CookieVisitor : ICookieVisitor

    {

        public List<Cookie> Cookies = new List<Cookie>();

        public void Dispose()

        {

            //Cookies.Clear();

        }

        public bool Visit(Cookie cookie, int count, int total, ref bool deleteCookie)

        {

            Console.WriteLine(cookie.Name + " = " + cookie.Value);

 

            var varmi = Cookies.Where(x=>x.Name == cookie.Name).FirstOrDefault();

            if (varmi==null)

            {

                Cookies.Add(cookie);

            }

            else

            {

                varmi.Value = cookie.Value;

            }

            return true;

        }

    }

}

 

2- kullanımı

 

  browser.FrameLoadEnd += Browser_FrameLoadEnd;

      Api2 apiNew = new Api2();

    CookieVisitor visitor = new CookieVisitor();

 

        private void Browser_FrameLoadEnd(object sender, FrameLoadEndEventArgs e)

        {

            if (e.Frame.IsMain)

            {

 

                getAllCookies(); // ayrıca bir işlem yapmadan önce kesin çalıştır

            }

        }

 

        public void getAllCookies()

        {

            var cookieManager = Cef.GetGlobalCookieManager();

            var cookies = cookieManager.VisitAllCookies(visitor);

 

           if (visitor.Cookies == null || visitor.Cookies.Count == 0)

            {

                return;

            }

            foreach (var cookie in visitor.Cookies)

            {

                Debug.WriteLine("CookieName: " + cookie.Name + " CookieValue:" + cookie.Value);

 

                System.Net.Cookie cookie1 = new System.Net.Cookie();

                cookie1.Name = cookie.Name;

                cookie1.Domain = cookie.Domain;

                cookie1.Value = cookie.Value;

                apiNew.cookies.Add(cookie1);

            }

 var sonuc = apiNew.requestGet(txtUrl.Text);

        }

 

 

 

 

 

 

 

4- TÜM COOKİLERİ ALMAK İÇİN DİĞER

KAYNAK : https://github.com/cefsharp/CefSharp/blob/master/CefSharp.Example/Handlers/BrowserProcessHandler.cs

 

 

  browser.FrameLoadEnd += Browser_FrameLoadEnd;

 

  private void Browser_FrameLoadEnd(object sender, FrameLoadEndEventArgs e)

        {

            if (e.Frame.IsMain)

            {

                getAllCookies();

            }

        }

 

  Api2 apiNew = new Api2();

 

        public void getAllCookies()

        {

            var cookieManager = Cef.GetGlobalCookieManager();

 

            cookieManager.VisitAllCookiesAsync().ContinueWith(t =>

            {

                if (t.Status == TaskStatus.RanToCompletion)

                {

                    var cookies = t.Result;

 

                    foreach (var cookie in cookies)

                    {

                        Debug.WriteLine("CookieName: " + cookie.Name+" CookieValue:"+cookie.Value);

                       System.Net.Cookie cookie1 = new System.Net.Cookie();

                        cookie1.Name = cookie.Name;

                        cookie1.Domain = cookie.Domain;

                        cookie1.Value = cookie.Value;

                        apiNew.cookies.Add(cookie1);

                    }

                }

                else

                {

                    Debug.WriteLine("No Cookies found");

                }

            });

        }

 

 

 

5- CLİCK OLAYLARI

 

 

       private async Task ClickButtonByNameAsync(string name)

        {

            // Sayfa DOM ağacını al

            var frame = browser.GetMainFrame();

            var taskCompletionSource = new TaskCompletionSource<bool>();

 

            // JavaScript kodunu oluştur

            string jsCode = string.Format("document.getElementsByName('{0}')[0].click();", name);

 

            // JavaScript kodunu Chromium'da çalıştır

            await frame.EvaluateScriptAsync(jsCode).ContinueWith(x =>

            {

                // İşlem tamamlandığında tıklamanın yapıldığından emin ol

                if (!x.IsFaulted)

                {

                    taskCompletionSource.TrySetResult(true);

                }

                else

                {

                    taskCompletionSource.TrySetException(x.Exception);

                }

            }).ConfigureAwait(false);

 

            // İşlem tamamlanana kadar bekle

            await taskCompletionSource.Task;

        }

 

 kullanımı

 

 ClickButtonByNameAsync("btnSorgula");//attirube olarak name'si btnSorgula olana click atar

 

diğer : //attirube olarak type'ı image ve alt'ı Sil olana click atar

 

 browser.ExecuteScriptAsync("document.querySelector('input[type=image][alt=Sil]').click();");

 

 

 

 

 

 

 

 

6- DEĞER YAZMA

 

 private void OnLoadingStateChanged(object sender, LoadingStateChangedEventArgs args)

        {

            if (!args.IsLoading && ilk)

            {

                browser.ExecuteScriptAsync("document.getElementById('txtkullaniciadi').value= '" + username + "'");

                browser.ExecuteScriptAsync("document.getElementById('txtsifre').value= '" + sifre + "'");

                ilk = false;

           }

        }

 

7- Listeyi teker teker dolanma çok önemli

using CefSharp;

using CefSharp.WinForms;

using System;

using System.Collections.Generic;

using System.ComponentModel;

using System.Data;

using System.Drawing;

using System.IO;

using System.Linq;

using System.Net.Http;

using System.Runtime.ConstrainedExecution;

using System.Text;

using System.Threading.Tasks;

using System.Windows.Forms;

using static System.Windows.Forms.VisualStyles.VisualStyleElement;

 

namespace OtoBot

{

    public partial class Form1 : Form

    {

        private ChromiumWebBrowser browser;

        private string[] urls;

        private int currentIndex = 0;

 

        public Form1()

        {

            InitializeComponent();

        }

 

        private void btnBaslat_Click(object sender, EventArgs e)

        {

            baslat();

        }

 

        public void baslat()

        {

\\ urls 'in içinde textbox a alt alta girilen urller var

            urls = textBox1.Text.Split(new[] { '\r', '\n' }, StringSplitOptions.RemoveEmptyEntries);

            currentIndex = 0;

            basladim = true;

            LoadNextUrl();

        }

        private async void LoadNextUrl()

        {

            if (currentIndex < urls.Length)

            {

                string url = urls[currentIndex];

                Console.WriteLine(url);

 

                await Task.Run(() =>

                {

                    browser.Load(url);

                });

 

                currentIndex++;

            }

        }

 

        public bool basladim = false;

        private void OnLoadingStateChanged(object sender, LoadingStateChangedEventArgs args)

        {

            if (!args.IsLoading && basladim)

            {

                LoadNextUrl();

            }

        }

 

        private void timer1_Tick(object sender, EventArgs e)

        {

            baslat();

        }

        private void Form1_Load(object sender, EventArgs e)

        {

            Cef.Initialize(new CefSettings());

            browser = new ChromiumWebBrowser("https://roketnot.com/");

            panel1.Controls.Add(browser);

            browser.Dock = DockStyle.Fill;

            browser.LoadingStateChanged += OnLoadingStateChanged;

        }

 

    }

}

 

 2023 Eylül 12 Salı
 1,816