Pergunta

Por exemplo, se eu estou trabalhando no Visual Studio 2008, eu quero que os valores DEVENV e 2008 ou 9.

O número de versão é muito importante ...

Foi útil?

Solução

Este vai ser cidade PInvoke ...

Você precisa PInvoke o seguinte da API em User32.dll

Win32 :: GetForegroundWindow () in retorna o HWND da janela ativa no momento.

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

Win32 :: GetWindowThreadProcessId (HWND, LPDWORD) retorna o PID de um determinado HWND

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

Em C #

Process.GetProcessByID () converte o PID para criar um objeto de processo C #

processInstance.MainModule retorna um ProcessModule com FileVersionInfo anexo.

Outras dicas

Este projeto demonstra as duas funções que você precisa: EnumWindows e GetWindowText

Você pode esclarecer sua pergunta? Você quer dizer que você quer um programa em execução, que irá dizer-lhe dados sobre o programa na janela ativa? Ou que você quer que seu programa para relatar sua própria versão?

O que você está procurando para obter as informações de qualquer forma é System.Reflection.Assembly . (Veja exemplos de código no link.)

Como chegar a montagem de um programa externo? Essa eu não tenho certeza sobre ...

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top