Как я могу определить текущее целевое имя процесса и версию в C # - PullRequest
1 голос
/ 23 сентября 2008

Например, если я работаю в Visual Studio 2008, мне нужны значения devenv и 2008 или 9.

Номер версии очень важен ...

Ответы [ 3 ]

8 голосов
/ 23 сентября 2008

Это будет город Пинвоук ...

Вам нужно вызвать следующие API в User32.dll

Win32 :: GetForegroundWindow () in возвращает HWND текущего активного окна.

/// <summary>
/// The GetForegroundWindow function returns a handle to the foreground window.
/// </summary>
[DllImport("user32.dll")]
static extern IntPtr GetForegroundWindow();

Win32 :: GetWindowThreadProcessId (HWND, LPDWORD) возвращает PID данного HWND

[DllImport("user32.dll", SetLastError=true)]
static extern uint GetWindowThreadProcessId(IntPtr hWnd, out uint lpdwProcessId);

In C #

Process.GetProcessByID () принимает PID для создания объекта процесса C #

processInstance.MainModule возвращает ProcessModule с прикрепленным FileVersionInfo.

0 голосов
/ 23 сентября 2008

Можете ли вы уточнить свой вопрос? Вы имеете в виду, что вы хотите запустить программу, которая сообщит вам данные о программе в активном окне? Или вы хотите, чтобы ваша программа сообщала о собственной версии?

То, что вы ищете для получения информации в любом случае, это System.Reflection.Assembly . (См. Примеры кода в ссылке.)

Как получить сборку из внешней программы? Тот, в котором я не уверен ...

0 голосов
/ 23 сентября 2008

Этот проект демонстрирует две необходимые функции: EnumWindows и GetWindowtext

...