public static void Start() { var launcherAssembly = typeof(LazuriteUI.Windows.Launcher.App).Assembly; var launcherExePath = Path.GetFullPath(Lazurite.Windows.Utils.Utils.GetAssemblyPath(launcherAssembly)); var launcherProcessName = Path.GetFileNameWithoutExtension(launcherExePath); var currentProcess = Process.GetCurrentProcess(); var currentProcessName = currentProcess.ProcessName; var currentProcessLocation = GetProcessFilePath(currentProcess); var currentProcessId = currentProcess.Id; var listenInterval = DuplicatedProcessesListenerInterval; var action = (Action)(() => { try { var processes = Process.GetProcessesByName(currentProcessName) .Union(Process.GetProcessesByName(launcherProcessName)) .ToArray(); var targetProcesses = processes.Where(x => x.Id != currentProcessId && ((StringComparer.OrdinalIgnoreCase.Equals(x.ProcessName, launcherProcessName) && StringComparer.OrdinalIgnoreCase.Equals(GetProcessFilePath(x), launcherExePath)) || (StringComparer.OrdinalIgnoreCase.Equals(x.ProcessName, currentProcessName) && StringComparer.OrdinalIgnoreCase.Equals(GetProcessFilePath(x), currentProcessLocation)))) .ToArray(); if (targetProcesses.Any()) { foreach (var process in targetProcesses) { process.Kill(); } Found?.Invoke(App.Current, new EventsArgs <Process[]>(targetProcesses)); listenInterval = DuplicatedProcessesListenerInterval_onFound; } else { listenInterval = DuplicatedProcessesListenerInterval; } //crutch foreach (var process in processes) { process.Dispose(); } } catch (Exception e) { Log.Warn("Ошибка во время получения процессов в DuplicatedProcessesListener. Возможной причиной может являться антивирус или отсутвие доступа.", e); } }); SystemUtils.StartTimer((token) => action(), () => listenInterval); }
/// <summary> /// Checks if a domain exists in the DNS server's cache /// </summary> /// <params> /// <param name="dnsIp">DNS server's IP address</param> /// <param name="query">Query to be executed</param> /// </params> /// <returns>True if it exists</returns> private bool ExistsInDnsServerCache(string dnsIp, string query) { var r = new Heijden.DNS.Resolver(dnsIp) { Recursion = false }; if (r.Query(query, Heijden.DNS.QType.A, Heijden.DNS.QClass.IN).Answers.Count > 0) { Found?.Invoke(query, null); return(true); } return(false); }
private void GetMergedAreas() { _mergedAreas = new ArrayList(); if (_target.Count == 1) { Reportor.Report("只选择了一个单元格,自动将搜寻区域拓展至其所在的整张工作表"); _target = _target.Worksheet.UsedRange;//这样的设定会使我们开发出更便于使用的VSTO } _application.FindFormat.MergeCells = true; Excel.Range result = _target.Find(What: "", After: _target.Cells[1, 1], SearchFormat: true); Excel.Range firstResult = result; if (firstResult == null) { Reportor.Report("没有发现合并单元格!"); _mergedAreas = null; return; } else { //卧槽,还是要else,太坑了。随便查找一下,如果只选中一块合并单元格,竟然是会跳出当前选区的…… //excel这种设定,倒也合理,直接把整个合并单元格区域当成起点,跑下一段去了。但是,它跟vba不一致啊…… if (firstResult.Row > (_target.Row + _target.Rows.Count - 1)) { _mergedAreas.Add(_target); Found.Invoke(this, null); return; } } Excel.Range mergedArea = firstResult.MergeArea; int t = 0; do { if (_cancellationToken.IsCancellationRequested) { return; } t++; Reportor.Report($"搜寻中,已找到{t}处合并区域,总进度未知..."); _mergedAreas.Add(mergedArea); result = _target.Find(What: "", After: result, SearchFormat: true);;//这里的接龙很巧妙,但也很坑。我还尝试着用FindNext,但是出现了一点问题。 mergedArea = result.MergeArea; } while (mergedArea != null && mergedArea.Cells[1, 1].Address != firstResult.Address); Reportor.Report($"搜寻完毕,共发现{t}处合并区域"); Found?.Invoke(this, null); }
public void Parsing(string URI, int depth) { if (depth >= 0) { WebClient webclient = new WebClient(); Uri uri = new Uri(URI); string page = String.Empty; try { page = webclient.DownloadString(uri); } catch (WebException ex) { if (ex.Status == WebExceptionStatus.ProtocolError && ex.Response is HttpWebResponse response) { Console.WriteLine("HTTP Status Code: " + (int)response.StatusCode); } } CQ csquery = CQ.Create(page); foreach (IDomObject img in csquery.Find("img")) { Found?.Invoke(URI, Depth, img.GetAttribute("src"), img.GetAttribute("alt")); } if (Depth > 0) { Regex hrefregex = new Regex("(href\\s*=\\s*(?:\"|')(.*?)(?:\"|'))", RegexOptions.IgnoreCase); Match hrefmatch; hrefmatch = hrefregex.Match(page); while (hrefmatch.Success) { string href = hrefmatch.Value.Substring(5).Trim('"', ' '); if (href.StartsWith("/")) { href = uri.GetLeftPart(UriPartial.Authority) + href; } if (href.Contains(uri.GetLeftPart(UriPartial.Authority)) && href != URI) { Parsing(href, Depth--); } hrefmatch = hrefmatch.NextMatch(); } } } }
private void Search(object parameters) { try { SearchParameters Parameters = (SearchParameters)parameters; string[] dirs = System.IO.Directory.GetDirectories(Parameters.Path); foreach (string dir in dirs) { Search(new SearchParameters(dir, Parameters.SearchPattern, Parameters.InsideText)); } string[] files = System.IO.Directory.GetFiles(Parameters.Path); foreach (string file in files) { CurrentFile = file; if (Parameters.SearchPattern.IsMatch(Path.GetFileName(file)) && CompareByInsideText(file, Parameters.InsideText)) { Found?.Invoke(file); FilesFound++; } if (toPause == true) { stopwatch.Stop(); toPause = false; mre.Reset(); mre.WaitOne(); } FilesTotal++; } } catch (UnauthorizedAccessException) { } catch (ArgumentOutOfRangeException) { } }
private void OnFound(FoundEventArgs e) { Found?.Invoke(this, e); }
public override void MemePeripheralFound(CoreBluetooth.CBPeripheral peripheral, string address) { FoundPeripherals.Remove(address); FoundPeripherals.Add(address, peripheral); Found?.Invoke(this, address); }
public static void Init() { if (adapter != null) { return; } adapter = BluetoothAdapter.DefaultAdapter; gattCallback = new GattCallback(); gattCallback.Connecting += OnDeviceConnecting; gattCallback.Connected += OnDeviceConnected; gattCallback.Disconnecting += OnDeviceDisconnecting; gattCallback.Disconnected += OnDeviceDisconencted; if (adapter == null) { Console.WriteLine("Device does not support Bluetooth"); return; } if (!adapter.IsEnabled) { Console.WriteLine("Bluetooth is not enabled"); return; } Scanning?.Invoke(null, EventArgs.Empty); ICollection <BluetoothDevice> pairedDevices = adapter.BondedDevices; if (pairedDevices.Count > 0) { // There are paired devices. Get the name and address of each paired device. foreach (BluetoothDevice d in pairedDevices) { string deviceName = d.Name; string deviceHardwareAddress = d.Address; Console.WriteLine(deviceName + " - " + deviceHardwareAddress); if (deviceHardwareAddress == "20:16:02:30:52:56" || deviceName == "aFloat") { Device = d; Found?.Invoke(null, EventArgs.Empty); Console.WriteLine("Device found. BondState = {0}", Device.BondState); } } } else { Console.WriteLine("No paired devices"); } if (Device == null) { NotFound?.Invoke(null, EventArgs.Empty); return; } }
public void FoundObject() { Found.Invoke(); }
protected virtual void OnFound(IPEndPoint endPoint) { Found?.Invoke(this, new FindEndPointArgs(endPoint)); }