Поиск по этому блогу

C# Windows Form - CefSharpBrowser - Authentication Required

C# Windows Form - CefSharpBrowser - Authentication Required
using CefSharp;
using CefSharp.Handler;
using CefSharp.WinForms;
using System;
using System.Collections.Generic;
using System.Drawing;
using System.Windows.Forms;
using System.Security.Cryptography.X509Certificates;
 
namespace CefSharpBrowser
{
    public partial class Form1 : Form
    {
        ChromiumWebBrowser browser = new ChromiumWebBrowser();
        public Form1()
        {
            InitializeComponent();
 
            // Создаём новую панель
            Panel panelBrowser = new Panel();
            panelBrowser.Name = "panelBrowser1";
            panelBrowser.Anchor = AnchorStyles.Top | AnchorStyles.Bottom | AnchorStyles.Left | AnchorStyles.Right;
            panelBrowser.Location = new Point(0, 0);
            panelBrowser.Size = new Size(this.Width, this.Height); // panelBrowser.Width = int; panels[0].Height = int;
            Controls.Add(panelBrowser);
            Controls.SetChildIndex(panelBrowser, 0);
 
            // Создание экземпляра ChromiumWebBrowser
            CefSettings settings = new CefSettings();
            Cef.Initialize(settings);
 
            // Повторяем несколько раз код ниже если хотим сделать несколько браузеров на одной форме
            browser.RequestHandler = new CustomRequestHandler();
            browser = new ChromiumWebBrowser("http://192.168.1.1/");
            browser.RequestHandler = new RequestHandler();
            panelBrowser.Controls.Add(browser);
            browser.Dock = DockStyle.Fill;
 
            // Выводим ошибки в окно
            browser.ConsoleMessage += (sender, e) =>
            {
                if (e.Level == LogSeverity.Error)
                {
                    MessageBox.Show($"[ERROR] {e.Message}");
                }
            };
        }
        private void Form1_FormClosed(object sender, FormClosedEventArgs e)
        {
            System.Environment.Exit(0);
        }
 
    }
    
    internal class CustomRequestHandler : IRequestHandler
    {
        public bool AutoLigon = false;
        public bool GetAuthCredentials(IWebBrowser chromiumWebBrowser, IBrowser browser, string originUrl, bool isProxy, string host, int port, string realm, string scheme, IAuthCallback callback)
        {
            // Автоматический ввод логина и пароля
            // Можно эти данные загружать с login.txt
            if (AutoLigon)
            {
                callback.Continue("admin", "12345678");
            }
            else
            {
                // Вызываем форму Авторизации из LoginForm.cs
                //var loginForm = new LoginForm();
                //loginForm.SetAlert($"Host: {host}, {realm}");
                //if (loginForm.ShowDialog() == DialogResult.OK)
                //{
                //    var login = loginForm.Login;
                //    var password = loginForm.Password;
                //    callback.Continue(login, password);
                //    return true;
                //}
                
                // Создаём новое одноразовое окно Авторизации
                using (var loginForm = new Form())
                {
                    loginForm.Text = "Authentication Required";
                    loginForm.Size = new System.Drawing.Size(290, 195);
                    loginForm.StartPosition = FormStartPosition.CenterScreen;
                    loginForm.FormBorderStyle = FormBorderStyle.FixedDialog;
                    //loginForm.ControlBox = false;
                    loginForm.MinimizeBox = false; // Отключить кнопку "Свернуть"
                    loginForm.MaximizeBox = false; // Отключить кнопку "Развернуть"
                    loginForm.TopMost = true;
 
                    var label = new Label();
                    label.Text = $"The server: \"{host}\"\nasks for a Username and Password.\nThe server reports: \"{realm}\"";
                    label.Location = new System.Drawing.Point(10, 10);
                    label.AutoSize = true;
 
                    var usernameLabel = new Label();
                    usernameLabel.Text = "Username:";
                    usernameLabel.Location = new System.Drawing.Point(10, 61);
                    usernameLabel.AutoSize = true;
 
                    var usernameTextBox = new TextBox();
                    usernameTextBox.Location = new System.Drawing.Point(75, 59);
                    usernameTextBox.Size = new System.Drawing.Size(189, 20);
 
                    var passwordLabel = new Label();
                    passwordLabel.Text = "Password:";
                    passwordLabel.Location = new System.Drawing.Point(10, 93);
                    passwordLabel.AutoSize = true;
 
                    var passwordTextBox = new TextBox();
                    passwordTextBox.Location = new System.Drawing.Point(75, 91);
                    passwordTextBox.Size = new System.Drawing.Size(189, 20);
                    passwordTextBox.PasswordChar = '*';
 
                    var okButton = new Button();
                    okButton.Text = "OK";
                    okButton.Location = new System.Drawing.Point(110, 122);
                    okButton.Click += (sender, e) =>
                    {
                        var login = usernameTextBox.Text;
                        var password = passwordTextBox.Text;
 
                        callback.Continue(login, password);
                        loginForm.DialogResult = DialogResult.OK;
                        loginForm.Close();
                    };
 
                    var cancelButton = new Button();
                    cancelButton.Text = "Cancel";
                    cancelButton.Location = new System.Drawing.Point(190, 122);
                    cancelButton.Click += (sender, e) =>
                    {
                        loginForm.DialogResult = DialogResult.Cancel;
                        loginForm.Close();
                    };
 
                    loginForm.Controls.Add(label);
                    loginForm.Controls.Add(usernameLabel);
                    loginForm.Controls.Add(usernameTextBox);
                    loginForm.Controls.Add(passwordLabel);
                    loginForm.Controls.Add(passwordTextBox);
                    loginForm.Controls.Add(okButton);
                    loginForm.Controls.Add(cancelButton);
 
                    if (loginForm.ShowDialog() == DialogResult.OK)
                    {
                        return true;
                    }
                    else if (loginForm.DialogResult == DialogResult.Cancel)
                    {
                        callback.Cancel(); // Отменяем аутентификацию
                        return false;
                    }
                }
            }
            return true;
        }
 
        public IResourceRequestHandler GetResourceRequestHandler(IWebBrowser chromiumWebBrowser, IBrowser browser, IFrame frame, IRequest request, bool isNavigation, bool isDownload, string requestInitiator, ref bool disableDefaultHandling)
        {
            return null;
        }
 
        public bool OnBeforeBrowse(IWebBrowser chromiumWebBrowser, IBrowser browser, IFrame frame, IRequest request, bool userGesture, bool isRedirect)
        {
            return false;
        }
 
        public bool OnCertificateError(IWebBrowser chromiumWebBrowser, IBrowser browser, CefErrorCode errorCode, string requestUrl, ISslInfo sslInfo, IRequestCallback callback)
        {
            return false;
        }
 
        public void OnDocumentAvailableInMainFrame(IWebBrowser chromiumWebBrowser, IBrowser browser)
        {
        }
 
        public bool OnOpenUrlFromTab(IWebBrowser chromiumWebBrowser, IBrowser browser, IFrame frame, string targetUrl, WindowOpenDisposition targetDisposition, bool userGesture)
        {
            return false;
        }
 
        public void OnRenderProcessTerminated(IWebBrowser chromiumWebBrowser, IBrowser browser, CefTerminationStatus status)
        {
        }
 
        public void OnRenderViewReady(IWebBrowser chromiumWebBrowser, IBrowser browser)
        {
        }
 
        public bool OnSelectClientCertificate(IWebBrowser chromiumWebBrowser, IBrowser browser, bool isProxy, string host, int port, X509Certificate2Collection certificates, ISelectClientCertificateCallback callback)
        {
            return false;
        }
    }
}

C# Windows Form Изменение цвета рамки для FormWindowState Normal и Maximized

C# Windows Form Изменение цвета рамки для FormWindowState Normal и Maximized
        public Form1()
        {
            InitializeComponent();
        }
        protected override void OnPaint(PaintEventArgs e)
        {
            base.OnPaint(e);
 
            if (WindowState == FormWindowState.Normal)
            {
                //if (!Focused)
                //{
                //    using (Pen borderPen = new Pen(Color.FromArgb(86, 4, 55), 1))
                //    {
                //        Rectangle borderRect = new Rectangle(ClientRectangle.Left, ClientRectangle.Top, ClientRectangle.Width - 1, ClientRectangle.Height - 1);
                //        e.Graphics.DrawRectangle(borderPen, borderRect);
                //    }
                //}
                //else
                //{
                using (Pen borderPen = new Pen(Color.FromArgb(255, 0, 121, 203), 1))
                    {
                        Rectangle borderRect = new Rectangle(ClientRectangle.Left, ClientRectangle.Top, ClientRectangle.Width - 1, ClientRectangle.Height - 1);
                        e.Graphics.DrawRectangle(borderPen, borderRect);
                    }
                //}
            }
            else if (WindowState == FormWindowState.Maximized)
            {
                using (Pen borderPen = new Pen(Color.FromArgb(255, 66, 66, 69), 1))
                {
                    Rectangle borderRect = new Rectangle(ClientRectangle.Left, ClientRectangle.Top, ClientRectangle.Width - 1, ClientRectangle.Height - 1);
                    e.Graphics.DrawRectangle(borderPen, borderRect);
                }
            }
        }
        protected override void OnResize(EventArgs e)
        {
            base.OnResize(e);
            if (WindowState == FormWindowState.Normal || WindowState == FormWindowState.Maximized)
            {
                Invalidate();
            }
        }

C# Windows Form FormBorderStyle = None Изменение размера формы

C# Windows Form FormBorderStyle = None Изменение размера формы
        public Form1()
        {
            InitializeComponent();
        }
        protected override void WndProc(ref Message m)
        {
            if (WindowState == FormWindowState.Normal)
            {
                switch (m.Msg)
                {
                    case 0x0084:    /*NCHITTEST*/
                        base.WndProc(ref m);
 
                        if ((int)m.Result == 0x01)  /*HTCLIENT*/
                        {
                            Point screenPoint = new Point(m.LParam.ToInt32());
                            Point clientPoint = this.PointToClient(screenPoint);
                            if (clientPoint.Y <= 10)
                            {
                                if (clientPoint.X <= 10)
                                    m.Result = (IntPtr)13;  /*HTTOPLEFT*/
                                else if (clientPoint.X < (Size.Width - 10))
                                    m.Result = (IntPtr)12;  /*HTTOP*/
                                else
                                    m.Result = (IntPtr)14;  /*HTTOPRIGHT*/
                            }
                            else if (clientPoint.Y <= (Size.Height - 10))
                            {
                                if (clientPoint.X <= 10)
                                    m.Result = (IntPtr)10;  /*HTLEFT*/
                                else if (clientPoint.X < (Size.Width - 10))
                                    m.Result = (IntPtr)1;   /*HTCAPTION*/ 
                                else
                                    m.Result = (IntPtr)11;  /*HTRIGHT*/
                            }
                            else
                            {
                                if (clientPoint.X <= 10)
                                    m.Result = (IntPtr)16;  /*HTBOTTOMLEFT*/
                                else if (clientPoint.X < (Size.Width - 10))
                                    m.Result = (IntPtr)15;  /*HTBOTTOM*/
                                else
                                    m.Result = (IntPtr)17;  /*HTBOTTOMRIGHT*/
                            }
                    }
                    return;
                }
            }
            base.WndProc(ref m);
        }

C# Windows Form Свернуть, Развернуть, Свернуть в окно, Закрыть

C# Windows Form Свернуть, Развернуть, Свернуть в окно, Закрыть
    // Свернуть
    WindowState = FormWindowState.Minimized;
    // Развернуть , Свернуть в окно:
    if (WindowState == FormWindowState.Maximized)
    {
        WindowState = FormWindowState.Normal;
    }
    else if (WindowState == FormWindowState.Normal)
    {
        WindowState = FormWindowState.Maximized;
    }
    // Закрыть всплывающее или диалоговое окно
    this.Close();
 
    // Если нужно закрыть всё приложение со всеми окнами
    Application.Exit();

C# Windows Form Перемещение формы за любой объект

C# Windows Form Перемещение формы за любой объект
        public Form1()
        {
            InitializeComponent();
            this.MouseDown += MouseMoveForm;
            //label1.MouseDown += MouseMoveForm;
            //button1.MouseDown += MouseMoveForm;
            //pictureBox1.MouseDown += MouseMoveForm;
        }
        private void MouseMoveForm(object sender, MouseEventArgs e)
        {
            base.Capture = false; // <- Основной объект "Окно формы"
            // указываем все объекты за которые можно перетаскивать форму
            // label1.Capture = false;
            // button1.Capture = false;
            // pictureBox1.Capture = false;
            Message m = Message.Create(base.Handle, 0xa1, new IntPtr(2), IntPtr.Zero);
            this.WndProc(ref m);
        }
        public Form1()
        {
            InitializeComponent();
            this.MouseDown += MouseMoveForm;
        }         private void MouseMoveForm(object sender, MouseEventArgs e)
        {             ReleaseCapture();             SendMessage(Handle, WM_NCLBUTTONDOWN, HT_CAPTION, 0);         }           private const int WM_NCLBUTTONDOWN = 0x00A1;         private const int HT_CAPTION = 0x0002;           [DllImport("user32.dll")]         private static extern bool ReleaseCapture();           [DllImport("user32.dll")]         private static extern IntPtr SendMessage(IntPtr hWnd, int Msg, int wParam, int lParam);