我想获取活动前台窗口的可执行文件路径。
我已经拥有前台窗口的处理程序:
[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]”是文件的路径。
我要求前景窗口的应用程序的路径,但如果你知道任何其他方式来做我需要的(获取前台应用程序的主要进程以后执行它),我会很高兴听到了。
谢谢并致敬!!!
答案 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。