1

我不知道为什么它不起作用?

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");
    }

输出 :

出了点问题

但我确信 Acrobat.exe 存在。

4

1 回答 1

2

SetForegroundWindow()关于是否真的有效,有一些奇怪的规则。

以下至少一项必须为真:

  • 该进程是前台进程。
  • 该进程由前台进程启动。
  • 进程收到最后一个输入事件。
  • 没有前台进程。
  • 正在调试前台进程。
  • 前景未锁定。
  • 前台锁定超时已过期(请参阅 SystemParametersInfo 中的 SPI_GETFOREGROUNDLOCKTIMEOUT)。
  • 没有菜单处于活动状态。

是这样吗?

有关完整详细信息,请参阅MSDN 文档

于 2013-04-18T09:42:19.340 回答