我怎样才能获得前景窗口的exe路径

时间:2010-02-15 11:46:12

标签: c# window foreground

我想获取活动前台窗口的可执行文件路径。

我已经拥有前台窗口的处理程序:

[DllImport("user32.dll")]
    static extern IntPtr GetForegroundWindow();
IntPtr handlerAppActual = GetForegroundWindow();

我想获得它的可执行文件的路径,就像一个快捷方式。 (例如:C:\ application \ application.exe)

为什么我需要这个? 稍后使用它来通过调用其进程来自动执行应用程序,如下所示:

Process process = new Process();
process.StartInfo.FileName = @parametros[0];
process.Start();

其中“parametros [0]”是文件的路径。

我要求前景窗口的应用程序的路径,但如果你知道任何其他方式来做我需要的(获取前台应用程序的主要进程以后执行它),我会很高兴听到了。

谢谢并致敬!!!

2 个答案:

答案 0 :(得分:1)

看一下System.Diagnostics.Process课程。您可以使用其MainWindowHandle属性来请求进程'窗口句柄,并将其与您获取的窗口句柄进行比较。

要获取系统上运行的所有可用进程的列表,请使用Process.GetProcesses ()

如果您具有匹配的流程对象,请使用Process.MainModule.FileName属性来获取可执行文件路径。

答案 1 :(得分:0)

您可以使用GetWindowThreadProcessId获取进程ID,使用OpenProcess从进程ID获取进程句柄,然后使用句柄上的psapi方法GetProcessImageFileName获取可执行文件的路径。

或者(根据Frank的回答),一旦拥有了Process Id,就可以使用Process.GetProcessById(pid),然后使用MainModule.FileName对象实例的Process属性。这样你只需要调用GetWindowThreadProcessId,甚至不需要使用OpenProcess / GetProcessImageFileName。