using CefSharp.WinForms;
using CefSharp;
namespace CefSharpDemo;
public partial class mainForm : Form
{
public mainForm()
{
mainForm.CheckForIllegalCrossThreadCalls = true;
InitializeComponent();
}
private const string baseURL = "http://localhost/CefSharpDemo";
private static Dictionary<string, string> URL = new Dictionary<string, string>()
{
{ "LOGIN", baseURL + "/login.php" },
{ "DASH", baseURL + "/dashboard.php" }
};
public ChromiumWebBrowser browser = new ChromiumWebBrowser("");
private void InitBrowser()
{
this.Controls.Add(browser);
browser.JavascriptMessageReceived += OnBrowserJavaScriptMessageReceived;
browser.Dock = DockStyle.Fill;
}
private void OnBrowserJavaScriptMessageReceived(object? sender, JavascriptMessageReceivedEventArgs e)
{
MessageBox.Show(e.Message.ToString());
}
private void mainForm_Load(object sender, EventArgs e)
{
}
private void btnLogin_Click(object sender, EventArgs e)
{
if (string.IsNullOrEmpty(txtUsername.Text) || string.IsNullOrEmpty(txtPassword.Text))
{
return;
}
InitBrowser();
browser.FrameLoadEnd += (s, args) =>
{
if (args.Frame.Url == URL["LOGIN"])
{
if (args.Frame.IsMain)
{
args.Frame.ExecuteJavaScriptAsync("document.getElementById('username').value = '" + txtUsername.Text + "';");
args.Frame.ExecuteJavaScriptAsync("document.getElementById('password').value = '" + txtPassword.Text + "';");
args.Frame.ExecuteJavaScriptAsync("document.getElementById('login').click();");
}
}
};
browser.LoadingStateChanged += (s, args) =>
{
if (!args.IsLoading)
{
System.Diagnostics.Debug.WriteLine(browser.Address);
if (browser.Address.Contains("?loginError"))
{
string errorMessage = browser.Address.Split("=")[1];
MessageBox.Show(errorMessage);
this.Controls.Remove(browser);
browser = new ChromiumWebBrowser(URL["LOGIN"]);
return;
}
else if (browser.Address == URL["DASH"])
{
MessageBox.Show("Login successful!");
browser.BringToFront();
}
}
};
}
}