There is no real way to 'sleep' another process, but you can get close.
The following example will kill the process, if you store the name somewhere in your application you could manually restart it when you want it to 'awake' again.
try
{
Process proc = Process.GetProcessesByName("explorer");
proc.Kill();
}
catch (Exception ex)
{
ex = null;
}
Another way to go is to just lower it's priority to Idle, this will make it consume minimal CPU time, just as if it was asleep, but it will still technically be awake.
try
{
Process proc = Process.GetProcessesByName("explorer");
proc.PriorityClass = ProcessPriorityClass.Idle;
}
catch (Exception ex)
{
ex = null;
}
You can find more details on the Process class here:
http://msdn.microsoft.com/en-us/library/system.diagnostics.process(v=vs.100).aspx[
^]
Hope this helped.