Skip to content
A C# library to monitor the opening and closing of specific Windows processes
Branch: master
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
ProcessesWatchdog
ProcessesWatchdogSample
.gitignore
LICENSE
ProcessesWatchdog.sln
README.md

README.md

ProcessesWatchdog

A C# library to monitor the opening and closing of specific Windows processes.

Get it on NuGET: https://www.nuget.org/packages/ProcessesWatchdog

Example (available under ProcessesWatchdogSample):

using System;
using System.Linq;
using ProcessesWatchdog;

namespace ProcessesWatchdogSample
{
    public class Program
    {
        public static void Main(string[] args)
        {
            // Create multiple watch dogs for various processes
            var watchedProcessNames = new[] {"Calculator", "mspaint", "Steam", "Spotify"};
            var watchdogs = watchedProcessNames.Select(CreateLoggingWatchDog).ToArray();
            
            foreach (var watchdog in watchdogs)
            {
                watchdog.Start();
            }

            Console.WriteLine("Press any key to stop the watch dogs");
            Console.ReadKey();

            Console.WriteLine("Stopping the watchdogs...");

            foreach (var watchdog in watchdogs)
            {
                watchdog.Stop();
            }

            Console.WriteLine("Press any key to exit");
            Console.ReadKey();
            
        }

        /// <summary>
        /// Creates a watch dog that writes to console when the process is started or terminated
        /// </summary>
        private static ProcessWatchdog CreateLoggingWatchDog(string processName)
        {
            var watchdog = new ProcessWatchdog(processName);
            watchdog.OnProcessOpened += (pid) => { Console.WriteLine($"{processName} is running with PID {pid}"); };
            watchdog.OnProcessClosed += () => { Console.WriteLine($"{processName} is terminated"); };

            return watchdog;
        }
    }
}
You can’t perform that action at this time.