Como posso determinar o nome do processo focado atual e versão em C #
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 ...
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 ...