¿Cómo puedo determinar el nombre y la versión del proceso enfocado actual en C#
process pinvoke (3)
¿Puedes aclarar tu pregunta? ¿Quiere decir que quiere un programa en ejecución, que le dirá datos sobre el programa en la ventana activa? ¿O que quiere que su programa informe su propia versión?
Lo que está buscando para obtener la información de cualquier manera es System.Reflection.Assembly . (Ver ejemplos de código en el enlace).
¿Cómo obtener el ensamblado de un programa externo? De eso no estoy seguro ...
Por ejemplo, si estoy trabajando en Visual Studio 2008, quiero los valores devenv y 2008 o 9.
El número de versión es muy importante ...
Esta va a ser la ciudad de Invoke ...
Deberá invocar las siguientes API en User32.dll
Win32 :: GetForegroundWindow () en devuelve el HWND de la ventana actualmente activa.
/// <summary>
/// The GetForegroundWindow function returns a handle to the foreground window.
/// </summary>
[DllImport("user32.dll")]
static extern IntPtr GetForegroundWindow();
Win32 :: GetWindowThreadProcessId (HWND, LPDWORD) devuelve el PID de un HWND dado
[DllImport("user32.dll", SetLastError=true)]
static extern uint GetWindowThreadProcessId(IntPtr hWnd, out uint lpdwProcessId);
Cª#
Process.GetProcessByID () toma el PID para crear un objeto de proceso C #
processInstance.MainModule devuelve un ProcessModule con FileVersionInfo adjunto.
Este proyecto demuestra las dos funciones que necesita: EnumWindows y GetWindowtext