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

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

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

[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]”是文件的路径。

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

谢谢,致敬!

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

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

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

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

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