private void ConnectDevice() { try { AdbShell.Connect(this.txtDevice.Text); } catch { } finally { this.btnConnect.Enabled = true; } }
private void LoadDevices() { try { Regex ipport_regex = new Regex(@"(?<ipport>[^\t]+)"); Regex regex = new Regex(@"(?<num>\d+)$"); List <Monitor> monitorList = new List <Monitor>(); Process[] ps = Process.GetProcesses(); foreach (var p in ps) { try { if (p.MainModule.ModuleName == "MEmu.exe") { // 逍遥模拟器 string name = p.MainWindowTitle; // "D:\Program Files\Microvirt\MEmu\MEmu.exe" MEmu_3 string cmdline = Tool.ReadCommandLine(p.Id); int port = 21503; if (cmdline.EndsWith("MEmu")) { port = 21503; } else { string numStr = regex.Match(cmdline).Groups["num"].Value; int num = 0; int.TryParse(numStr, out num); port = (21503 + num * 10); } monitorList.Add(new Monitor() { IPPort = "127.0.0.1:" + port, Title = name }); } else if (p.MainModule.ModuleName == "Nox.exe") { // 夜神模拟器 string name = p.MainWindowTitle; // "D:\Program Files\Microvirt\MEmu\MEmu.exe" MEmu_3 string cmdline = Tool.ReadCommandLine(p.Id); int port = 62001; if (cmdline.EndsWith("administrator")) { port = 62001; } else { string numStr = regex.Match(cmdline).Groups["num"].Value; int num = 0; int.TryParse(numStr, out num); if (num == 0) { port = 62001; } else { port = (62024 + num); } } monitorList.Add(new Monitor() { IPPort = "127.0.0.1:" + port, Title = name }); } } catch { } } if (monitorList.Count > 0) { foreach (var item in monitorList) { AdbShell.Connect(item.IPPort); } string content = AdbShell.Devices(); string[] array = content.Split(new char[] { '\r', '\n' }, StringSplitOptions.RemoveEmptyEntries); foreach (var item in array) { if (item.EndsWith("\tdevice")) { string ipport = ipport_regex.Match(item.Trim()).Groups["ipport"].Value; var monitor = monitorList.Find(p => p.IPPort == ipport); if (monitor == null) { monitorList.Add(new Monitor() { Title = ipport, IPPort = ipport }); } } } this.cmbDevice.DataSource = monitorList; } } catch { } finally { this.btnRefreshDevices.Enabled = true; } }