I did a small example using WqlEventQuery object to check if there is a new instance of a process. Afterwards check for the name and do as you want. If you want to improve my query - feel free to have a look at the according syntax description.
private static void lookForExcel()
{
WqlEventQuery query = new WqlEventQuery("__InstanceCreationEvent", new TimeSpan(0, 0, 1), "TargetInstance isa \"Win32_Process\"");
ManagementEventWatcher watcher = new ManagementEventWatcher(query);
watcher.EventArrived += new EventArrivedEventHandler(watcher_EventArrived);
watcher.Start();
Console.ReadLine();
watcher.Stop();
}
static void watcher_EventArrived(object sender, EventArrivedEventArgs e)
{
string instanceName = ((ManagementBaseObject)e.NewEvent["TargetInstance"])["Name"].ToString();
if (instanceName.ToLower()=="excel.exe")
{
Debug.WriteLine("Excel has been started ...");
}
}