3

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

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

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

我正在询问前台窗口应用程序的路径,但是如果您知道任何其他方式来做我需要的事情(让前台应用程序的主进程稍后执行它),我会很高兴听到它。

谢谢和敬礼!!!

4

2 回答 2

1

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

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

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

于 2010-02-15T12:07:27.240 回答
0

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

或者(基于弗兰克的回答),一旦你有了进程 ID,你就可以使用Process.GetProcessById(pid)然后使用对象实例MainModule.FileName的属性。Process这样您只需要 p/invokeGetWindowThreadProcessId甚至不需要使用 OpenProcess/GetProcessImageFileName。

于 2010-02-15T12:05:33.960 回答