using System;
|
using System.IO;
|
using System.Collections.Generic;
|
using System.ComponentModel;
|
using System.Data;
|
using System.Drawing;
|
using System.Linq;
|
using System.Text;
|
using System.Threading.Tasks;
|
using System.Windows.Forms;
|
using CefSharp;
|
using CefSharp.WinForms;
|
using CefSharp.Web;
|
using System.Windows;
|
using System.Diagnostics;
|
|
namespace TestWebview
|
{
|
|
public partial class Form1 : Form
|
{
|
public ChromiumWebBrowser chromeBrowser;
|
|
Process process_clash_cmd ;
|
Process process_firefox = new Process();
|
|
|
public string web_url = "http://127.0.0.1:5173/";
|
|
public Form1()
|
{
|
InitializeComponent();
|
|
this.Text = "畅游" + FingerPrint.Value();//.get_user_code();
|
|
InitializeChromium();
|
}
|
|
//初始化浏览器并启动
|
public void InitializeChromium()
|
{
|
//参数设置
|
CefSettings settings = new CefSettings()
|
{
|
Locale = "zh-CN",
|
CachePath = Directory.GetCurrentDirectory() + @"\Cache"
|
};
|
Cef.Initialize(settings);
|
//创建实例
|
chromeBrowser = new ChromiumWebBrowser(web_url);
|
chromeBrowser.LifeSpanHandler = new LifeSpanHandler();
|
chromeBrowser.MenuHandler = new MenuHandler();
|
|
//this.Controls.Add(chromeBrowser);
|
this.Controls.Add(chromeBrowser);
|
|
chromeBrowser.Dock = DockStyle.Fill;
|
|
// 允许以同步的方式注册C#的对象到JS中
|
chromeBrowser.JavascriptObjectRepository.Settings.LegacyBindingEnabled = true;
|
CefSharpSettings.WcfEnabled = true;
|
|
// 注册C#的对象到JS中的代码必须在Cef的Browser加载之前调用
|
chromeBrowser.JavascriptObjectRepository.Register("backendSharp", new CefCustomObject(chromeBrowser,this), false,
|
options: BindingOptions.DefaultBinder);
|
}
|
|
|
|
private void button1_Click(object sender, EventArgs e)
|
{
|
var jsCode = $"displayMessage('C#里的消息调用')";
|
chromeBrowser.ExecuteScriptAsync(jsCode);
|
}
|
|
private void button2_Click(object sender, EventArgs e)
|
{
|
process_clash_cmd = new Process();
|
process_clash_cmd.StartInfo.FileName = "clash.exe";
|
process_clash_cmd.StartInfo.Arguments = "";
|
process_clash_cmd.StartInfo.UseShellExecute = false;
|
process_clash_cmd.StartInfo.CreateNoWindow = true;
|
process_clash_cmd.StartInfo.RedirectStandardOutput = true;
|
process_clash_cmd.Start();
|
|
process_clash_cmd.BeginOutputReadLine();
|
process_clash_cmd.OutputDataReceived += new DataReceivedEventHandler(process_clash_OutputDataReceived);
|
|
}
|
|
private void process_clash_OutputDataReceived(object sender, DataReceivedEventArgs e)
|
{
|
if (String.IsNullOrEmpty(e.Data) == false)
|
{
|
//var jsCode = $"displayMessage('"+ e.Data + "')";
|
//chromeBrowser.ExecuteScriptAsync(jsCode);
|
Console.WriteLine(e.Data);
|
}
|
}
|
|
private void button4_Click(object sender, EventArgs e)
|
{
|
process_firefox.StartInfo.FileName = @".\FirefoxPortable\FirefoxPortable.exe";
|
process_firefox.Start();
|
}
|
|
private void button5_Click(object sender, EventArgs e)
|
{
|
Process[] proc = Process.GetProcessesByName("Firefox");
|
for (int i = 0; i < proc.Length; i++)
|
{
|
proc[i].Kill(); //逐个结束进程.
|
}
|
}
|
|
private void button3_Click(object sender, EventArgs e)
|
{
|
Process[] proc = Process.GetProcessesByName("clash");
|
for (int i = 0; i < proc.Length; i++)
|
{
|
proc[i].Kill(); //逐个结束进程.
|
}
|
}
|
}
|
}
|