Question

I can't figure out why it is not working ?

static void ActivateApp(string processName)
{
    Process[] p = Process.GetProcessesByName(processName);

    // Activate the first application we find with this name
    if (p.Any()) SetForegroundWindow(p[0].MainWindowHandle);
    else
    {
        Console.WriteLine("Something wrong");
    }
}


    [STAThread]
    static void Main(string[] args)
    {
        ActivateApp("Acrobat.exe");
    }

Output :

Something is wrong

But I'm sure that Acrobat.exe exist.

Était-ce utile?

La solution

There are some weird rules for whether SetForegroundWindow() will actually work.

At least one of the following must be true:

  • The process is the foreground process.
  • The process was started by the foreground process.
  • The process received the last input event.
  • There is no foreground process.
  • The foreground process is being debugged.
  • The foreground is not locked.
  • The foreground lock time-out has expired (see SPI_GETFOREGROUNDLOCKTIMEOUT in SystemParametersInfo).
  • No menus are active.

Is this the case?

See the MSDN documentation for full details.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top