static void Main(string[] args) { // linux下可能需要手动复制SharpProxy项目中的libs文件夹, 不然会报错找不到 config.json 等配置文件 // 如果报错注意查看Console输出的错误信息, trojan go lib有详细的日志输出 // 即使以GUI程序启动, 调试模式也会在visual studio中输出控制台日志 Console.WriteLine(SharpProxyTrojanGo.GetPlatformInfo()); var dir = Environment.CurrentDirectory + "/libs"; SharpProxyTrojanGo.Start(dir, false); Thread.Sleep(1000); Console.WriteLine("输入Q终止程序"); while (true) { #if Debug var s = Console.ReadLine(); // 如果不阻塞进程,main程序退出之后golang的后台线程会被关闭 if (s.ToLower() == "q") { break; } #else Thread.Sleep(1000); #endif } SharpProxyTrojanGo.Stop(); Thread.Sleep(1000); }
static void Main(string[] args) { // linux下可能需要手动复制SharpProxy项目中的libs文件夹, 不然会报错找不到 config.json 等配置文件 // 如果报错注意查看Console输出的错误信息, trojan go lib有详细的日志输出 // 即使以GUI程序启动, 调试模式也会在visual studio中输出控制台日志 Console.WriteLine(SharpProxyTrojanGo.GetPlatformInfo()); var dir = Environment.CurrentDirectory + "/libs"; SharpProxyTrojanGo.Start(dir); Console.WriteLine("输入Q终止程序"); while (true) { var s = Console.ReadLine(); // 如果不阻塞进程,main程序退出之后golang的后台线程会被关闭 if (s != null && s.ToLower() == "q") { break; } else if (s == null) { Console.WriteLine("标准输入流为null, 可能是被其他进程启动, 作为子进程运行."); Thread.Sleep(1000 * 60 * 60); continue; } } SharpProxyTrojanGo.Stop(); Thread.Sleep(1000); }
//初始化浏览器并启动 public void InitializeChromium() { CefSettings settings = new CefSettings(); // 启用缓存和cookie settings.CachePath = AppDomain.CurrentDomain.SetupInformation.ApplicationBase + @"\Cache"; settings.PersistSessionCookies = true; // trojan go 客户端代理端口可以在配置文件中修改 settings.CefCommandLineArgs.Add("proxy-server", "socks5://127.0.0.1:1082"); // dir是Trojan go客户端配置文件的目录 SharpProxyTrojanGo.Start(Environment.CurrentDirectory + "/libs"); // Initialize cef with the provided settings Cef.Initialize(settings); // Create a browser component chromeBrowser = new ChromiumWebBrowser("https://www.google.com/"); // Add it to the form and fill it to the form window. this.panelBrowser.Controls.Add(chromeBrowser); chromeBrowser.Dock = DockStyle.Fill; chromeBrowser.LifeSpanHandler = new OpenPageSelf(); // 不用新窗口打开url chromeBrowser.KeyboardHandler = new CefKeyBoardHander(); this.Width = 1024; this.Height = 800; var bookConfigs = BooksUtils.GetAllBookConfig(); bookConfigs.ForEach(x => { x.BookName = $"{x.BookName}-{x.Author}"; }); cbxBookConfig.DataSource = bookConfigs; cbxBookConfig.DisplayMember = nameof(Book.BookName); cbxBookConfig.ValueMember = nameof(Book.Id); cbxBookConfig.SelectedIndex = 0; }