Как я могу получить путь exe окна переднего плана - PullRequest
3 голосов
/ 15 февраля 2010

Я хотел бы получить путь к исполняемому файлу активного окна переднего плана.

У меня уже есть обработчик окна переднего плана:

[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();

, где "parametertros [0]" - это путь к файлу.

I´Я спрашиваю путь к приложению окна переднего плана, но если вы знаете какой-либо другой способ сделать то, что мне нужно (запустите основной процесс приложения переднего плана, чтобы выполнить его позже), я буду рад это услышать.

Спасибо и приветствуем !!!

Ответы [ 2 ]

1 голос
/ 15 февраля 2010

Взгляните на класс System.Diagnostics.Process . Вы можете использовать его свойство MainWindowHandle, чтобы запросить дескриптор окна процесса и сравнить его с дескриптором полученного вами окна.

Чтобы получить список всех доступных процессов, запущенных в вашей системе, используйте Process.GetProcesses ()

Если у вас есть соответствующий объект процесса, используйте свойство Process.MainModule.FileName, чтобы получить путь к исполняемому файлу.

0 голосов
/ 15 февраля 2010

Вы можете использовать GetWindowThreadProcessId , чтобы получить идентификатор процесса, использовать OpenProcess , чтобы получить дескриптор процесса из идентификатора процесса, а затем использовать метод psapi GetProcessImageFileName на дескрипторе, чтобы получить путь к исполняемому файлу.

Или (основываясь на ответе Фрэнка), получив идентификатор процесса, вы можете использовать Process.GetProcessById(pid), а затем использовать свойство MainModule.FileName экземпляра объекта Process. Таким образом, вам нужно только вызвать p / invoke GetWindowThreadProcessId и даже не использовать OpenProcess / GetProcessImageFileName.

...