Beispiel #1
0
        /// <summary>
        /// Parcours la liste des processus actifs pour forcer le traitement sur les processus de la liste blanche
        /// </summary>
        private static void ListenProcesses()
        {
            while (true)
            {
                try
                {
                    Thread.Sleep(1000);

                    if (_Whitelist.Count > 0)
                    {
                        // Vérification du besoin de traiter la fenêtre actuelle
                        IntPtr hWnd = WindowLib.GetForegroundWindow();

                        if (!_ExcludedhWnd.Any(x => x == hWnd) && (hWnd != _lasthWnd || (hWnd == _lasthWnd && _IsSuccessful == false)))
                        {
                            uint actProcessId = 0;
                            WindowLib.GetWindowThreadProcessId(hWnd, out actProcessId);
                            Process actProcess = Process.GetProcessById((int)actProcessId);

                            if (_Whitelist.Any(i => i.Name.ToUpper() == actProcess.ProcessName.ToUpper()))
                            {
                                ChangeBorderStyle(hWnd, actProcess);
                            }

                            _lasthWnd     = hWnd;
                            _IsSuccessful = true;
                        }
                        // Nettoyage des handle stockés
                        foreach (IntPtr StockedhWnd in _ExcludedhWnd)
                        {
                            uint StockedProcessId = 0;
                            WindowLib.GetWindowThreadProcessId(StockedhWnd, out StockedProcessId);

                            if (StockedProcessId == 0)
                            {
                                _ExcludedhWnd.Remove(StockedhWnd);
                            }
                        }
                    }
                }
                catch { }
            }
        }