Yo diría que es al revés, primero encontramos la ventana activa, luego el id de proceso, y por último el nombre de la aplicación para ese id
... algo así;
class Program
{
static void Main(string[] args)
{
uint pid = 0;
System.Threading.Thread.Sleep(5000); //solo para darte 5 segundos a poner el foco en otra ventana ;)
uint i = Importados.GetWindowThreadProcessId(Importados.GetForegroundWindow(), out pid);
System.Diagnostics.Process p = System.Diagnostics.Process.GetProcessById(Convert.ToInt32(pid));
Console.WriteLine(p.ProcessName);
Console.Read();
}
}
public class Importados
{
[DllImport("user32.dll")]
public static extern IntPtr GetForegroundWindow();
[DllImport("user32.dll")]
public static extern uint GetWindowThreadProcessId(IntPtr hWnd, out uint lpdwProcessId);
}
Saludos