Pregunta

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...

¿Fue útil?

Solución

Esta será la ciudad de PInvoke...

Necesitará invocar las siguientes API en User32.dll

Win32::GetForegroundWindow() 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 determinado

[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.

Otros consejos

Este proyecto demuestra las dos funciones que necesita: enumeración de ventanas y Obtener texto de ventana

¿Puedes aclarar tu pregunta?¿Quiere decir que desea que se ejecute un programa que le brindará datos sobre el programa en la ventana activa?¿O que desea que su programa informe su propia versión?

Lo que estás buscando para obtener la información de cualquier manera es Conjunto.de.reflexión.del.sistema.(Ver ejemplos de código en el enlace).

¿Cómo obtener el ensamblado desde un programa externo?De eso no estoy seguro...

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top