Ejemplo n.º 1
0
        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);
        }
Ejemplo n.º 2
0
        /// <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);
        }
Ejemplo n.º 3
0
        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);
        }
Ejemplo n.º 4
0
 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();
             }
         }
     }
 }
Ejemplo n.º 5
0
        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) { }
        }
Ejemplo n.º 6
0
 private void OnFound(FoundEventArgs e)
 {
     Found?.Invoke(this, e);
 }
Ejemplo n.º 7
0
 public override void MemePeripheralFound(CoreBluetooth.CBPeripheral peripheral, string address)
 {
     FoundPeripherals.Remove(address);
     FoundPeripherals.Add(address, peripheral);
     Found?.Invoke(this, address);
 }
Ejemplo n.º 8
0
        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;
            }
        }
Ejemplo n.º 9
0
 public void FoundObject()
 {
     Found.Invoke();
 }
Ejemplo n.º 10
0
 protected virtual void OnFound(IPEndPoint endPoint)
 {
     Found?.Invoke(this, new FindEndPointArgs(endPoint));
 }