Beh ... diciamo che dovresti entrare un po' nei dettagli del problema ...

Per avviare un programma puoi usare la API+

CreateProcess
http://msdn.microsoft.com/en-us/library/ms682425.aspx

... per "eseguire un comando" non so cosa intendi di preciso ...

Per sapere se un processo particolare e' attivo, devi enumerare i processi in esecuzione tramite la

EnumProcesses
http://msdn.microsoft.com/en-us/libr...29(VS.85).aspx

come mostrato in

http://www.codeproject.com/KB/thread...Processes.aspx

Tieni presente che gli obiettivi che ti sei prefisso non sono di "facile" risoluzione ... quindi dovrai studiarci un bel po' su ....